关于 Universal Links 及接入遇到的问题

背景

- iOS 13 对三方App的跳转安全级别的要求提高
- 一些大厂的 SDK 积极响应要求,如我们就是在接入 QQ 互联时只能下载最新的SDK,要求必须使用 Universal Links

开发测试环境

- Mac 10.14.5 iOS 13.2.3 iphone 7
- QQ SDK 3.3.7

遇到的问题

- 在 iOS 13 以下的系统可以正常分享, 13的系统初次安装可分享之后均不能分享,如下图每次会检查

universal_links_01

Apple Support Universal Links

- 创建名字为 `apple-app-site-association` 且饮食的数据为 JSON 格式,文件内容决定你的 APP 可以处理那些 URL
- 将文件 `apple-app-site-association` 给服务端且必须支持 **https**,文件的位置放在根目录下或 `.well-know` 子文件夹下(个人建议两处都放,开始就是因为后者路径下没话,害我调试了半天,后面会贴出调试方法)
- 准备 APP 要处理的 Universal Links

创建 apple-app-site-association 文件

- 基本的格式如下  
{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "9JA89QQLNQ.com.apple.wwdc",
                "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
            },
            {
                "appID": "ABCD1234.com.apple.wwdc",
                "paths": [ "*" ]
            }
        ]
    }
}

以上是 apple-app-site-association 文件的内容示例, 注意文件名后面不要接后缀 .json
目前开发者可改的内容是appID & paths, applinks\apps 固定写法;
appID的组成:申请的开发者帐号的ID:你在Xcode中Domain里填的域名
paths你自己定义的合法路径,在这里写的路径,你可以拼成这样: https://com.apple.wwdc/wwdc/news/ , 此路径在你手机的记事本和 Safari中打开会调转到你的APP
*: 是通配符,/*表示: /后的所有路径都匹配

Xcode中相关的配置

universal_links_02

检验配置是否成功(输入自己的域名按下面两种方式)

- 在手机自带的 APP 备忘录 中输入 https://help.wechat.com/app/,如下图表示成功

universal_links_03

- 在手机的 Safari 中输入 https://help.wechat.com/app/,如下图表示成功(这里要多下拉几次,藏在网址的导航栏下面)

universal_links_04

遇到的问题

- 在 iOS 的 13 及以上的系统上,当时在服务端的 .well-konw 路径下没有放 AASA 文件,导致 13 系统的手机一直下载不成功
- 参考 stackoverflow 上的方法调试找到下载不成功的原因,加上后测试就Ok了
<a href='https://stackoverflow.com/questions/32751225/ios-universal-links-are-not-opening-in-app'>Stackoverflow Univerlinks</a> 
- 调试步骤:
    * 在 Xcode 中 Window -> Device and Simulators -> Open Console -> 在左边栏打开选择你的设备
    * 在右上角的搜索框中输入 `swcd` 去检索你下载 AASA 文件的相关信息
    * 手机没有下载如下图

universal_links_06

    * 下载成功的大概如下图

universal_links_05
universal_links_07
universal_links_08

补充

官方检测,但好像只有上架的才会是通过,开发中的检测不到

猜你喜欢

转载自www.cnblogs.com/tzsh1007/p/12198442.html