Universal Link是苹果在iOS 9提供的一种通过https从App外部返回、打开当前App的方法,如果配置了Universal Link,当用户点击了Universal Link,或者在App打开微信、QQ后返回时(如分享、支付),会根据配置的链接重定向到对应App,但如果未配置,则会通过浏览器打开。在iOS 9之前,使用的是URL Schemes来从外部对App进行跳转。

1、开发者中心配置:在Certificates, Identifiers & ProfilesIdentifiers一栏中找到对应App的Bundle ID,点击对应的Bundle ID进行编辑,勾选Associated Domains一栏,然后保存。

Link Universal ios 配置 universallink校验哪里设置苹果_app

2、配置apple-app-site-association文件

创建一个内容如下的json格式的文件,首先创建一个没有后缀名的文件,不要手动去除后缀名,这个文件名必须为apple-app-site-association,切记没有后缀名可通过在终端输入命令:vim apple-app-site-association  创建文件,文件内容可如下:

{
  "applinks": {
    "apps": [
      
    ],
    "details": [
      {
        "appID": "WQ8TNCB73.com.universallink.demo",
        "paths": [
          "*",
          "/*",
          "/app/*",
          "/qq_conn/123/*"
        ]
      }
    ]
  }
}

 

注意:

appID:组成方式是 Team ID.APP Bundle ID。Team ID登陆开发者中心,在Account ->Membership可看到

paths:设定app支持的路径列表,"*"的写法代表了可识别域名下所有链接,/app/*是微信路径,/qq_conn/123/是QQ路径,123为QQ互联平台appID。

json文件编辑好后上传该文件到后台服务器根目录下或者.well-known目录下,上传完后,根据如下:www.xxx.com/apple-app-site-association路径在浏览器访问一下(www.xxx.com为服务器域名根目录),当在浏览器中输入这个文件链接后,应该是直接下载apple-app-site-association文件。

3、Xcode 工程配置

在项目里添加Associated Domains:targets->Signing&Capabilites->+Capability->Associated Domains,添加后,在其中的Domains中填入的是存放apple-app-site-association文件的服务器域名,必须以applinks:为前缀,后面接服务器域名,不需要https,如下:

Link Universal ios 配置 universallink校验哪里设置苹果_Universal_02

 

配置好后,可以在苹果提供的网页来验证我们编写的这个apple-app-site-association是否合法有效,进入验证网址输入域名进行验证,配置成功后一般可搜索出app对应信息,有时我们会在最后一行看到如下Error:

Link Universal ios 配置 universallink校验哪里设置苹果_ci_03

以上信息提示 Error no apps with domain entitlements 是因为app还未在App Store上发布。

 

4、可以在手机备忘录上输入配置的domains,长按该链接,如果出现在’XXX’中打开,则表示成功

Link Universal ios 配置 universallink校验哪里设置苹果_app_04

 

或是将要测试的网址在Safari中打开,在出现的网页上方下滑,可以看到有在”XX”应用中打开:(注意:在Google浏览器中下拉不会出现)

Link Universal ios 配置 universallink校验哪里设置苹果_Universal_05

 

5、最后,在AppDelegate中实现如下方法,对通过Universal Link方式打开app进行处理:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler {

    if (![[UMSocialManager defaultManager] handleUniversalLink:userActivity options:nil]) {

        // 其他SDK的回调



    }

    return YES;

}

 

另外,在微信开放平台配置Universal Link只需要配置成:https://www.xxx.com/的格式,以/结尾,QQ互联平台配置成https://www.xxx.com,QQ互联平台会自动拼接上/qq_conn/123/