概述
Associated Domains
是关联我们的 网站
和 App
的前置条件. 关联我们的 网站
和 App
的时候, 必须在 App
中配置 entitlement
文件, 同时也要在我们的网站中包含一个 apple-app-site-association
文件.
Shared web credentials
, Universal links
和 Handoff
都需要该前置条件.
Xcode 工程配置
配置 Entitlement
文件:
- 在
Xcode
工程中的Capabilities
中打开Associated Domains
配置项. - 点击
+
添加一行配置项. - 在
Domains
中填入我们关联网站的域名
. 此处支持通配符*
, 可以使用*.example.com
的形式来匹配关联所有子域名.
URL 配置格式如下:
1
<服务类型>:<完整的域名>[:端口]
服务类型的选择:
- 共享网络凭证 (Shared web credentials): webcredentials.
- Universal links: applinks.
- Handoff: activitycontinuation.
举例 如果
共享网络凭证
(Shared web credentials) 就写成:webcredentials:zhk1024.com
服务端配置
服务端
的配置仅仅需要在我们的服务器目录下增加一个文件名为 apple-app-site-association
的文件(无扩展名).
这个文件内存储的是 App
和 网站
关联的配置信息列表.
以 共享网络凭证 (Shared web credentials)
为例, 内容如下:
1
2
3
4
5
6
{
"webcredentials": {
"apps": [ "D3KQX62K1A.com.example.DemoApp",
"D3KQX62K1A.com.example.DemoAdminApp" ]
}
}
其中关联信息列表的格式为:
1
<Team Identifier>.<Bundle Identifier>
D3KQX62K1A
为我们的 团队标识符
, com.example.DemoAdminApp
为我们的域名.
该文件可以存储在 根目录
下, 或者 .well-known
目录下.
必须保证以下 URL 能够访问到文件内容:
1
2
3
https://example.com/apple-app-site-association
或者
https://example.com/.well-known/apple-app-site-association
注意 此处必须使用
HTTPS
且不能做任何的重定向
. iOS 9.3.1 及以上系统版本, 该文件最大不能超过128kb
.
验证文件
当 App
安装完成之后, iOS 就会尝试从 entitlement
文件中配置的域名所在的服务器中下载并验证关联文件. 此处就要求配置信息与我们的 App
必须是一致的.
注意 如果站点有多个子域名, 则每个子域名都需要分别配置. 并且每个子域名都需要配置自己的
apple-app-site-association
文件.
验证可能会失败的情况
- 配置文件不存在, 或者配置列表中未包含该
App
的配置信息 (团队标识符 + App标识符). - 服务器返回
300-499
之间的状态码, 包含重定向
.
如果服务器返回了 500-599
之间的状态码, iOS
就会认为该文件暂时不可用, 然后重试. 默认每 3
小时重试一次, 最多重试 8
次.
App
与 域名
关联成功后, 就会一直生效直到 App
被 卸载
. 在开发测试过程中, 如果更新了 关联文件
可以 删除
掉 App
并 重新安装
来快速更新我们的修改结果.