美文网首页
iOS9 通用链接唤起App(Universal Links)

iOS9 通用链接唤起App(Universal Links)

作者: 三千烦恼风_eefa | 来源:发表于2020-06-08 18:01 被阅读0次

通用链接的作用是将网站和App建立联系,通过点击http链接打开App

Apple 推出通用链接:一种能够方便的通过传统HTTP链接来启动APP, 使用相同的网址打开网站和 APP。

主要工作

  1. 添加域名到 Capabilities
    首先在xcode的capabilities中添加APP域名,必须用applinks: 前置它。还添加一些可能拥有的子域和扩展等。


    image.png
  2. 上传 apple-app-site-association 文件

  3. 在AppDelegate 里处理通用链接
    为了在 APP 里支持通用链接, 你需要在 AppDelegate 里实现
    application:continueUserActivity:restorationHandler:

  4. 开发者网站打开Associated Domains功能
    开发者中心->Identitiers->App IDs->需要支持的应用App ID

  5. 添加功能之后,Provisioning Profile需要重新生成并更新一下,因为entitlement文件增加内容了,需要更新到证书里面

主要原理

如果支持通用链接(比如iOS9,并且把这个功能打开了),当用户点击了通用链接后,iOS系统会启动App,并且APPDelegate中的代理函数application:continueUserActivity:restorationHandler:会被调用。NSUserActivity * 类型的参数userActivity的属性activityType的值为NSUserActivityTypeBrowsingWeb,这样就可以判断这次的启动是用户通过点击通用链接而过来的。对于iOS9以前的不支持通用链接的系统,这里不会进来。
另外,URL信息,通过userActivity的属性webpageURL传递过来。根据这个URL,可以跳转本地的页面,或者像以前一样,调用Safari显示网页,具体操作就根据URL的编码约定了。

// 通用链接
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
    // 用户点击通用链接,导致APP启动,会进到这个里面
    if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        NSURL *url = userActivity.webpageURL;
        if (nil == url) {
            return YES;
        }
        if ([url.host isEqualToString:@"domain.com"]) {
            // 是目标链接,调用Native代码,打开对应的页面
        } else {
            // 不是目标链接,用Safari打开
            [[UIApplication sharedApplication] openURL:url];
        }
    }
    return YES;
}

作者:老章888
链接:https://www.jianshu.com/p/a2bb34eb7a91
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

网友评论

      本文标题:iOS9 通用链接唤起App(Universal Links)

      本文链接:https://www.haomeiwen.com/subject/ofyrtktx.html