Universal Link|Associated Domain简介

Universal Link 简介

universal link 是苹果在WWDC 2015年提出的一个iOS 9的新特性之一。此特性类似深层链接,并能够方便的通过打开一个Https链接来直接启动客户端App(在手机中安装有App 的时候)。对比旧有技术URL Schemeuniversal link有诸多优点。

  • 唯一性: 不像URL Schemes,universal links因为,universal links 的app
    对应注册是通过https 链接获取的,一个链接只有一个对应的app,而域名具有唯一性。
  • 安全性: 当App安装的时候回通过自己配置的链接去获取app对应的配置文件,网站上的文件只能你来配置
  • 扩展性:universal link可以在未安装app的时候使用,如果没有使用的话,可以直接跳转至链接地址
  • 简单: 一个链接可以提供给webapp使用
  • 私密性:其他app 想掉起native app 的时候不需要知道是否安装app,因为如果没有安装可以直接跳转至web页面。
    简单点说,universal link 就是 原来URL Scheme的替代技术。

Associated Domain 简介

Shared web credentials, universal links, and Handoff all use associated domains. Shared web credentials uses the webcredentials
service, universal links the applinksservice, and Handoff the
activitycontinuation service

关联域名有三种服务:

  • applinks:通用链接服务
  • webcredentials:网页和应用共享证书凭据服务
  • activitycontinuation:HandOff服务复制代码

这些服务的配置格式为

<service>:<fully qualified domain>:<port number>

关于webcredentails,可以看这篇文章,此处就不再重复了。 注HandOff为苹果的接力服务,此处暂时不扩展。

Universal Link 配置及开发

  1. 在苹果开发者中心登录账号,然后在Identifiers模块中选择自己项目的Identifier 然后打开关联域名功能
    Universal Link|Associated Domain简介_第1张图片

  2. 然后需要申请一个域名且支持https

  3. 将一个json格式的非json 后缀的文件放服务器上

{
  "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "公司开发者账号的小组ID.包名id",
                "paths": [ "*" ]
            }
        ]
    }
}
  1. Xcode 中关联自己配置的域名
    Universal Link|Associated Domain简介_第2张图片
    Universal Link|Associated Domain简介_第3张图片格式为applinks:xxx.xx.xx(xxx.xx.xx为域名)
  2. 在代码中处理universal link 调起的时候处理。
// 之前在改方法中调用
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {

    NSLog(@"userActivity : %@",userActivity.webpageURL.description);
  // XInstall SDK 调用接口
    [XInstallSDK continueUserActivity:userActivity];
    
    return YES;
}

// 有SceneDelegate 之后, 在下列方法中调用
- (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity {
    NSLog(@"userActivity : %@",userActivity.webpageURL.description);
  // XInstall SDK 调用接口
    [XInstallSDK continueUserActivity:userActivity];
}

json数据实在app 安装时请求到iOS 设备上的,所以json 最好不要经常改变

综上所述universal link的配置,除了iOS开发者平台的配置外,服务端还涉及如下几步

  • 一个支持https的域名

  • 一台较好带宽的服务器

  • 服务端的文件apple-app-site-association文件配置,以及预埋

好在有专门的平台能一键完成这样的服务端配置。我自己用的是【亘古平台】的服务(之前用过这家的内测服务),登陆注册以后就可以免费使用了。

你可能感兴趣的:(ios常见问题)