iOS-SDK开发

配置 Associated Domains

2021-11-30  本文已影响0人  走着走着就会敲代码了

本文主要是讲解一下开启Associated Domains并实现通用链接universal link 的配置,以及对另外一篇文章 《QQ分享提示设备未授权(错误码:25105)》关于QQ、微信对应的universal link 的补充。

Associated Domains 主要作用就是由外部浏览器打开已安装的APP,实现引流等作用。 iOS 9.0 之前的实现深度链接是通过 URL Types 白名单来实现,白名单的方式存在弊端例如:与其它APP白名单重复了,导致无法正常跳转至所需的APP。

Associated Domains 、QQ 、微信 校验 universal link 的方式是共通—— 通过访问服务器域名的根目录或者.well-known子目录下配置 apple-app-site-association 的文件来实现的。 这点很重要,后续如果出现问题,基本就是检查一下是否开启配置,访问一下对应域名下的apple-app-site-association文件,基本就可确定问题所在。

下面先讲解一下关于 Associated Domains 配置(这部分基本就是百度一堆,这边算是一个小小的记录吧)。

Associated Domains 配置

配置Associated Domains需要进行以下步骤来实现:

1、苹果开发者后台

苹果开发者后台 中找到对应的APPID,开启配置,如下图:

苹果开发者后台开启 Associated Domains 配置

2、Xcode 工程

Xcode 工程的配置也没啥好说的,只需要关注一点 Domains 的填充内容是以applinks:域名 的格式即可,如图:

Xcode 工程配置 Associated Domains

3、apple-app-site-association文件

建议参考官方文档 Support Universal Links,emmm... 懒得看的话,继续看我写的:

创建一个文件命名 apple-app-site-association 不带任何后缀的文件,文件内容:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TeamId.com.xxx.xxx",
                "paths": [ "*","/wwdc/news/","/qq_conn/101577777/*"]
            },
            {
                "appID": "TeamId.com.xxx.xxx",
                "paths": [ "*","/wwdc/news/","/qq_conn/101566666/*"]
            }
        ]
    }
}

说明
appID:开发者团队ID与bundle id的组合
paths:用于关联或者不想关联的网站部分,值可以是一个字符串数组。如上文使用的* 代指整个网站;/wwdc/news/ 为指定特定的链接;/qq_conn/101566666/*附加 * 表示为网站的一部分后续可以增加其它内容。具体使用可以参考官方文档,根据自身所需来填写 paths的值。

完成 apple-app-site-association 文件的编辑后,将文件放置 服务器的根目录或.well-known子目录,该文件能够通过 HTTPS 访问即可,请使用一下路径进行访问:

根目录访问URL
https://<domain>/apple-app-site-association
.well-known 子目录访问URL
https://<domain>/.well-known/apple-app-site-association

<domain> 替换为对应的域名即可。

完成后可通过 苹果官方提供Universal Links校验 输入域名进行访问看是否成功,查询结果如图:

校验结果

这样算是完成配置了,如果同个域名下需要配置多个APP,建议使用子域名的形式来实现,将域名解析成对应每个项目的子域名,在每个子域名下都生成一份apple-app-site-association 文件,例如 aaa.baidu.com,配置xcode Associated Domains 的时候 domains 则输入 aaa.baidu.com即可,后续通过浏览器访问 aaa.baidu.com/xxx 即可出现提示打开APP。

注意:
浏览器上需要打开 APP 访问的 URL 不需要部署到服务器,如果apple-app-site-association文件的paths 配有通配符 * 的情况可以直接在域名后随意拼接字符也能检查出本地是否安装有APP从而提示打开APP。

全域命中 universal link 问题:
由于项目中碰到一下问题,深入探讨了一下关于 iOS Associated Domains 配置 universal link。问题复现如下:

解决: 根据 universal link 的校验原理,针对这块做一些修改即可,例如配置子域名来实现项目隔离,或者是修改paths来实现。

注: Associated DomainsQQ、微信都是通过校验apple-app-site-association 文件来实现,但是QQ、微信Associated Domains多了个配置管理后台的universal link ,并且QQ、微信是通过管理后台配置的universal link 来校验自身,因此通过配置universal link避免全局命中。

结语

对接 QQ、微信授权神马的 都是cmd + c、cmd + v 配置universal link 看着提示梭哈完事,然后多项目深究一下 universal link 后跪了... emmm 写个简书记录一下。

上一篇 下一篇

猜你喜欢

热点阅读