iOS|iOS 配置 Universal Links
前言
由于对接微信分享的时候发现微信的SDK 1.8.6需要支持Universal Links,于是查看官网以及各个博客资源
结合自身实际操作,记录在案
文档&资料
1、Support Universal Links - 支持通用链接
这份文档讲的比较详细,说到了很重要的一点,下面具体操作会提到
NOTE2、Supporting Associated Domains in Your App
Don’t append.json
to theapple-app-site-association
filename.
这份文档仔细讲了2种(iOS12以后、iOS12以前)
apple-app-site-association
文件的写法,按需参考3、苹果官方验证网址
配置好后可以在这个网页里面验证是否配置成功
操作 这里以xcode11为例
1、在工程中添加 Associated Domains
文章图片
按序操作
Domains的配置以
applinks:
开头,后面写你放置
apple-app-site-association
文件的域名,到根目录即可
2、登录苹果开发者后台,在你的 APPID 中支持 Associated Domains,并更新 Profile 文件
3、配置 apple-app-site-association 文件
配置方式可以参照上面
文档1
和文档2
创建一个名为apple-app-site-association的json文件
{
"applinks": {
"apps": [],
"details": [{
"appID": "你的TeamID.你的Bundle ID",
"paths": ["*"]
}]
}
}
apps
后面的数组为空就好,主要内容配置在details
里面包含:
appID
和paths
这里着重讲一下
paths
:path
是设定你的app支持的路径列表,只有访问到域名下对应path的地址才会唤起APP。其中可以使用通配符
*
或者/app/*
具体路径地址
/app/home
还可以忽略某种规则
NOT /help/website/*
划重点:填写完毕后保存,并且将文件
.json
后缀删掉,没错,删掉,会变成一个不能正常打开的文件4、上传apple-app-site-association到你的服务器根目录或者.well-known目录
上传完后,先访问一下,看看是否能够获取到,当你在浏览器中输入这个文件链接后,应该是直接下载apple-app-site-association文件
同时可以访问苹果官方验证,来校验你文件是否正确上传
文章图片
如果校验成功会展示以上信息
Error no apps with domain entitlements
是因为还没有发布
5、以上做完之后可以安装APP到手机上
用Safari访问你的
服务器域名
+你的path
https://域名/path/
下拉查看是否有打开APP入口(如下图)。若无入口,可能是由于系统拉取Universal Links失败,请检查手机网络状态是否正常,或更新/重装APP。
文章图片
image.png
系统只会在第一次安装/启动APP的时候去拉取Universal Links
6、到这里基本算配置成功了,如果还想美化一下目标页面的话,可以参考这两篇文档(纯英文)
这两个都是通过配置
meta
来调整头部标签的,有兴趣可以了解一下配置WebPage的方式
The Open Graph protocol
需要注意的几点 原文出处:https://blog.csdn.net/gsl111000/article/details/102937698
1、Universal Link跨域
Universal Link有跨域问题,Universal Link必须要求跨域,如果不跨域,就不会跳转(iOS 9.2之后的改动)
假如当前网页的域名是A,当前网页发起跳转的域名是B,必须要求B和A是不同域名才会触发Universal Link,如果B和A是相同域名,只会继续在当前WebView里面进行跳转,哪怕你的Universal Link一切正常,根本不会打开App
2、Universal Link请求apple-app-site-association时机
- 当我们的App在设备上第一次运行时,如果支持Associated Domains功能,那么iOS会自动去GET定义的Domain下的apple-app-site-association文件
- iOS会先请求https://domain.com/.well-known/apple-app-site-association,如果此文件请求不到,再去请求https://domain.com/apple-app-site-association,所以如果想要避免服务器接收过多GET请求,可以直接把apple-app-site-association放在./well-known目录下
- 服务器上apple-app-site-association的更新不会让iOS本地的apple-app-site-association同步更新,即iOS只会在App第一次启动时请求一次,以后除非App更新或重新安装,否则不会在每次打开时请求apple-app-site-association
需要添加libc++.tbd
或者将工程支持c++编译,把其中一个文件后缀改为.mm即可
QQ分享的校验 QQ也发布了关于Universal Link的支持与适配
官方文档教你如何配置
看过之前的讲解之后,这里简单陈述一下
由于qq对于path有一定的要求,apple-app-site-association文件需要我们单独按照qq的配置
{
"appID": "EB333MN775.com.hundsun.InternetSellTicket.appstore",
"paths": [
...
"/qq_conn/${你的qq应用APPId}/*"
]
}
【iOS|iOS 配置 Universal Links】然后去开放平台维护一下相关信息,校验通过之后就可以了
推荐阅读
- vue-cli|vue-cli 3.x vue.config.js 配置
- 2020-04-07vue中Axios的封装和API接口的管理
- iOS中的Block
- 从战略性的角度可以配置股票
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- 2019-08-29|2019-08-29 iOS13适配那点事
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- iOS面试题--基础
- 接口|axios接口报错-参数类型错误解决
- iOS|iOS 笔记之_时间戳 + DES 加密