网络知识 娱乐 iOS 定时唤醒打卡界面

iOS 定时唤醒打卡界面

背景

公司对于打卡时间有要求,而且要早中晚三次打卡,之前习惯了上班人脸打卡,刚开始不适应,老是会忘记,所以就萌生了使用快捷指令,定时唤起打卡界面,这样即使中午吃饭的时候忘记了,看手机时也会自动跳转,就能想起来要打卡。

实现逻辑

- 应用支持universalLink,这个应该大部分应用都已经有了,因为微信分享之前更新升级的时候,已经有要求了。

- 简单的快捷指令的制作,如果不会,可以参考快捷指令入门

下面,就来一步步实现:

首先,找到自己应用的universalLink,比如是https://www.baidu.com/,可以在Xcode的Assoicated Domains中看到,如下图:

applinks:后面的链接即是APP支持的UniversalLink,然后把applinks:后面的内容复制出来到备忘录中,在前面添加https://,然后保存,点击打开,看是否会跳转APP——跳转即说明链接正确。可以继续下一步。

第二步,是使用UniversalLink,点击跳转APP,如何打开指定页面的问题,比如打卡界面,或者其它页面。

思路:

1. 在链接后拼接指定参数,代表跳转指定页面;

2. 在指定地方拦截这个链接,进行跳转处理。

使用UniversalLink跳转的,可以在AppDelegate中的application:continueUserActivity:restorationHandler:方法中处理,如下:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler {
    // NSUserActivityTypeBrowsingWeb 由Universal y唤醒的APP
    if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        NSURL *webpageURL = userActivity.webpageURL;
        NSString *host = webpageURL.host;
        if ([host isEqualToString:@"yourhost.com"]) {
            //进行我们需要的处理
            // 说明是自己公司的链接,进行处理
            // 提取链接中参数,根据参数跳转指定界面
        } else {
            [[UIApplication sharedApplication]openURL:webpageURL];
        }
    }
    return YES;
}

然后在备忘录中点击刚刚拼接好的链接,看能否跳转到指定界面。如果成功,可以进行下一步。

下一步就是创建快捷指令,

1. 打开“快捷指令”APP

2. 点击底部中间的Tab“自动化”

3. 点击右上角“+”按钮,

4. 选择“创建个人自动化”,

5. 选择“特定时间”,

6. 然后修改时间为要设置的时间,并把重复设置为“周”纬度,可以勾选周一到周五,然后点击下一步

7. 选择“添加操作”,在搜索框中输入“URL”,选中搜索结果中的“打开URL”,然后把URL的地址设置为刚刚拼接的地址,点击下一步

8. 把运行前询问开关关闭,然后点击完成。

这样就完成了一个自动化指令,每周一到周五,每天特定时间会执行打开刚刚那个URL的操作。

然后可以自己试一下,会发现,打开了APP,却没有跳转到指定界面,为什么呢?哈哈,明明已经添加了处理,为什么没有跳转呢?

因为这种打开URL跳转到APP的,拦截方法并不是上面那个application:continueUserActivity:restorationHandler:方法,而是另外一个,AppDelegate中application:openURL:options:方法,故而把上面的处理在这里也添加一下即可

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options {
     if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        NSURL *webpageURL = userActivity.webpageURL;
        NSString *host = webpageURL.host;
        if ([host isEqualToString:@"yourhost.com"]) {
            //进行我们需要的处理
            // 说明是自己公司的链接,进行处理
            // 提取链接中参数,根据参数跳转指定界面
        } else {
            [[UIApplication sharedApplication]openURL:webpageURL];
        }
    }
    return YES;
}

然后运行,就发现完美了,?