首页 iOS 配置 App 的 Associated Domains
文章
取消

iOS 配置 App 的 Associated Domains

概述

Associated Domains 是关联我们的 网站App 的前置条件. 关联我们的 网站App 的时候, 必须在 App 中配置 entitlement 文件, 同时也要在我们的网站中包含一个 apple-app-site-association 文件.

Shared web credentials, Universal linksHandoff 都需要该前置条件.

Xcode 工程配置

配置 Entitlement 文件:

  1. Xcode 工程中的 Capabilities 中打开 Associated Domains 配置项.
  2. 点击 + 添加一行配置项.
  3. Domains 中填入我们关联网站的 域名. 此处支持通配符 *, 可以使用 *.example.com 的形式来匹配关联所有子域名.

URL 配置格式如下:

1
<服务类型>:<完整的域名>[:端口]

服务类型的选择:

  1. 共享网络凭证 (Shared web credentials): webcredentials.
  2. Universal links: applinks.
  3. 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 文件.

验证可能会失败的情况

  1. 配置文件不存在, 或者配置列表中未包含该 App 的配置信息 (团队标识符 + App标识符).
  2. 服务器返回 300-499 之间的状态码, 包含 重定向.

如果服务器返回了 500-599 之间的状态码, iOS 就会认为该文件暂时不可用, 然后重试. 默认每 3 小时重试一次, 最多重试 8 次.

App域名 关联成功后, 就会一直生效直到 App卸载. 在开发测试过程中, 如果更新了 关联文件 可以 删除App重新安装 来快速更新我们的修改结果.

本文由作者按照 CC BY 4.0 进行授权