iOS开发-Universal Link 通用链接配置

Universal Links(通用链接)具体配置流程

iOS9.0之前,一直使用URL Schemes 技术来从外部打开app,但是如果没有安装app,就会有“无法打开页面”的弹窗提示,首次打开还要权限提示

iOS9之后就可使用Universal Links技术进行跳转页面,这种体验更加完美,当用户的点击该链接,只要手机中安装了支持该链接的APP就会直接进入到APP中。如果没有安装APP则会跳转到Safari浏览器中,展示H5页面。对用户来说则是一个无缝跳转的过程。

Universal Links 配置流程

1.在开发者中心配置Associated Domains

image

如图开启 Associated Domains 功能
记录1,2之后配置文件有用

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

创建一个内容为json格式的无后缀文件,文件名为apple-app-site-association,⚠️注意:文件无后缀!!!

{
    "applinks":{
        "apps":[],
        "details":[
            {
                "appID":"9JA89QQLNQ.com.apple.wwdc",
                "paths": ["*"]
            }
        ]
    }
}

appID:组成方式是TeamID.BundleID。TeamID和BundleID就是第一步中的1和2。
paths:设定你的app支持的路径列表,只有这些指定路径的链接,才能被app所处理。*的写法代表了可识别域名下所有链接。

如果该域名下有多个app,paths就不能只有一个*,这样会造成app跳转错乱,配置如下

{
    "applinks":{
        "apps":[],
        "details":[
            {
                "appID":"9JA89QQLNQ.com.apple.app1",
                "paths": ["/b/*"]
            },
            {
                "appID":"9JA89QQLNQ.com.apple.app2",
                "paths": ["/c/*"]
            }
        ]
    }
}
3.上传文件

配置好文件后,将该文件交给后台开发人员上传到域名所对应的根目录或者.well-known目录下,这是为了苹果能够获取你上传的文件,上传完成后测试一下访问路径是否能够获取到。
在你的浏览器中输入文件链接
https://配置域名/.well-known/apple-app-site-association 或
https://配置域名/apple-app-site-association
能够正常访问到

4.Xcode配置

在Domains中填入你想支持的域名,可以多个,必须以applink:开头
例如 applinks:www.baidu.com
image

5.验证Universal Links是否生效

1.苹果官网验证apple-app-site-association 是否生效

https://search.developer.apple.com/appsearch-validation-tool/

2.浏览器输入

https://app-site-association.cdn-apple.com/a/v1/你的域名

例如:https://app-site-association.cdn-apple.com/a/v1/www.baidu.com
成功的话返回结果即为文件内容

3.终端输入

curl -v https://app-site-association.cdn-apple.com/a/v1/域名

(如果不成功,可以查看报错信息)

4.以上没有问题的话,说明配置成功。如果不成功,后台上传文件,或者服务器访问权限导致,可找后端开发人员联调。

(我在这个地方访问不成功是因为我们的服务器禁止了搜索引擎的爬虫机器人扫描我们的环境,导致苹果一直访问不到我们上传的文件,让后端取消了禁止就一切正常了)

可验证:
在备忘录中输入
https://域名/ 点击可直接打开APP

https://域名/b/
https://域名/c/
可打开对应的app

此链接不可报404,否着可能打不开(待验证)

参考链接:
https://www.jianshu.com/p/6e8ee6b37739
https://www.jianshu.com/p/73e7da4e8163
https://www.jianshu.com/p/f1c97d0d0d22
https://www.jianshu.com/p/4c96b54ef8d1
https://www.jianshu.com/p/49bae73b8e72
https://www.jianshu.com/p/0ead88409212/