概述
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 并 重新安装 来快速更新我们的修改结果.