目录
1.第一步:开启 Associated Domains 服务
2.第二步:服务器配置 apple-app-site-association(AASA) 文件
2.1 创建 apple-app-site-association 文件
2.2 将 apple-app-site-association 文件上传到服务器
3.第三步:配置 Associated Domains(域名)
4.第四步:验证通用连接(Universal Link)是否配置正确
4.1 在 Safari 输入 Universal Links
4.2 在 iOS 原生备忘录上,输入 Universal Links
我按照大佬的操作都完成了,服务端给的地址也都验证通过,我前端配置也都ok,就是不跳转,最后发现是手机缓存问题,重启手机后,再重试就好了。
底部文章是来自一个大佬的博客总结的内容:
Universal Link 是苹果在 WWDC 2015 上提出的 iOS 9 的新特性之一。此特性类似于深层链接,并能够方便地通过打开一个 Https 链接来直接启动您的客户端应用(手机有安装 App)。对比以往所使用的 URLSheme,这种新特性在实现 web-app 的无缝链接时,能够提供极佳的用户体验。使用前请阅读苹果官方文档 - Support Universal Links
由于苹果 iOS 13 系统版本安全升级,微信 SDK1.8.6 版本要求支持 Universal Links 方式跳转,以便进行合法性校验,提升安全性。详情请参考微信官方文档 - iOS 接入指南
Universal Link 可以无缝链接到 app 或网页,主要应用场景有内容分享和广告投放。它有如下特点:
applinks:
的域名请求 apple-app-site-association
配置文件;apple-app-site-association
配置文件向 iOS 系统配置;登录苹果开发者中心,在“Certificates, Identifiers & Profiles(证书、标识符和描述文件)”页面选择“Identifiers(标识符)”
在“Identifiers(标识符)”选项下,添加或选择对应的 App ID
勾选 Associated Domains 并保存,一定要确保开启 Associated Domains 服务
重要提示:开启 Associated Domains 服务后,需要重新生成 profile 文件
AASA(apple-app-site-association)文件是一个位于
根目录
或/.well-known
文件夹下面的 json 文件 (例如: https://your_domain/apple-app-site-association 或 https://your_domain/.well-known/apple-app-site-association),里面描述了目标 app 的信息。AASA 文件和 entitlements 为网站和 app 提供了互相认证的机制。
apple-app-site-association
文件需要创建一个 apple-app-site-association
文件,必须命名为 apple-app-site-association
,切记没有后缀,有些人的电脑是隐藏文件后缀的,务必把 .json
后缀去掉!
1 | touch apple-app-site-association |
文件内添加 json 格式数据,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | { "applinks": { "apps": [], // apps:是限制只能在这几个app中使用,基本上不填写,所以是空数组 "details": [ // 可以配置一个,也可配置多个 { "appID": "9JA89QQLNQ.com.apple.wwdc", // appID:是由TeamId + . + BundleId组成 "paths": ["*"] // paths:设定你的app支持的路径列表,只有这些指定路径的链接,才能被app所处理。"*"的写法代表了可识别域名下所有链接 }, { "appID": "ABCD1234.com.apple.wwdc", "paths": ["/app/*", "/qq_conn/appid/*"] // "/app/*"是自己定义的路径;"/qq_conn/appid/*"需要根据QQ互联平台设置,appid是QQ互联后台对应应用的APPID } ] } } |
apple-app-site-association
文件上传到服务器你的服务器必须支持 HTTPS 协议,并且拥有该域名下上传到根目录的权限;
将这个文件上传到你的服务器,可以将这个文件放到服务器的 根目录
下,也可以放到 .well-known
这个子目录下,这是为了苹果能获取到你上传的文件;
该文件的 content-type
需要设置成 application/json
,可以直接在 oss 上进行修改;
上传完成后,对应的链接分别为https://xxx/apple-app-site-association
或https://xxx/.well-known/apple-app-site-association
(xxx 为服务端的域名),然后试着访问一下,看看是否能够获取到,当你在浏览器中输入这个文件链接后,出现下图就可以了:
Xcode 版本:Version 14.2 (14C18)
在 Xcode 中打开项目,选择目录中的 xxx.xcodeproj
(xxx 通常为项目名称),在 xxx.xcodeproj -> Signing&Capabilites -> Capability -> Associated Domains
这个路径下进行配置;
然后双击 Associated Domains
,即可在 Xcode 中对 Associated Domains 进行配置,如果 Capability
中已经存在 Associated Domains
,那么直接配置即可;
在 Associated Domains 里面配置的 Universal Links,必须以 applinks:
为前缀,格式为:applinks:+配置的域名
,例如:applinks:test.com
HBuilderX 版本:3.8.4
打开 HBuilderX 并选择对应的项目,找到 manifest.json
,在 App常用其它设置
中找到“iOS 设置”下的 关联域(Associated Domains)
进行配置;
或者打开项目的 manifest.json
文件,切换到“源码视图”项,在 uni-app 项目在 app-plus -> distribute -> ios -> capabilities -> entitlements
节点下添加 com.apple.developer.associated-domains
字段,字段值为字符串数组,每个字符串为要关联的域名;
1 2 3 4 5 6 7 | "capabilities": { "entitlements": { "com.apple.developer.associated-domains": [ "applinks:xxx.xxx.com" ] // xxx.xxx.com 是应用通用链接的域名(这里不要包含path),请修改为自己应用要使用的域名 } } |
保存后提交云端打包生效;
注意:在 Associated Domains 里面配置的 Universal Links 必须要以
applinks:
开头,后面写上域名,例如:applinks:test.com
注意:测试时,手机上必须安装你需要跳转的应用并配置 Associated Domains
注意:服务器上
apple-app-site-association
的更新不会让 iOS 本地的apple-app-site-association
同步更新,即 iOS 一般只会在 APP 下载完后初次启动才会下载这个文件,所以如果修改了apple-app-site-association
文件,请删除 APP 后重新下载。