Apple App Site Association 校验
apple-app-site-association 文件必须是合法的 JSON,通过 HTTPS 放在 /.well-known/apple-app-site-association,不能重定向,每个 App 写成 TEAMID.bundle.id。把文件粘贴到下面,找出 JSON 和结构错误,再输入一个链接,看看最先命中哪条规则、会不会打开你的 App。
1. 检查服务器怎样返回这个文件
2. 粘贴或拖入文件
也可以把下载的文件直接拖到框里。
3. 测试一个链接
请先在第 2 步粘贴一个合法的文件。
每一项单独判断,规则按顺序,先匹配到的生效。匹配逻辑已与苹果的 swcutil 工具核对。真机上还需要 Associated Domains 权限、能访问到的文件,以及苹果 CDN 已经抓取过它。
规则已于 2026-10-30 与苹果文档和 swcutil 核对。
使用方法
- •JSON 由本页的严格解析器读取,出错时会给出行号、列号和原因,例如多余的逗号或用了单引号。
- •结构按苹果的 applinks 文档检查:details 里的 appIDs 和 components(/、?、#、exclude、comment、caseSensitive、percentEncoded),defaults、substitutionVariables,旧的 appID 加 paths 格式,以及 webcredentials 和 appclips 的 apps 列表。
- •链接测试按苹果的规则:各项和各条规则按顺序判断,先匹配的生效;* 匹配任意多个字符,? 匹配一个字符,?* 至少一个。苹果文档没写清楚的地方,例如结尾斜杠、缺少的查询参数和百分号编码,都用苹果的 swcutil 工具实测后照做。
- •浏览器不能读取其他网站的文件,所以托管检查部分会给出针对你域名的 curl 命令,并读取它们的输出:状态码、重定向和 Content-Type。
- •不会上传任何内容:你粘贴的文本只在浏览器里检查。
它做不到的事
- •不会去抓取你的文件,也不检查 HTTPS 证书,请用页面给出的 curl 命令。
- •看不到苹果 CDN 的状态(抓取新文件最多要一天),也看不到设备(大约每周检查一次)。
- •无法确认 App 里有对应的 Associated Domains 权限,也无法确认 Team ID 属于你。
- •苹果现行文档没有写大小限制和内容类型。128 KB 限制和 application/json 来自苹果旧版 Universal Links 指南,本页只作为警告提示。
- •规则已于 2026-10-30 与苹果文档和 swcutil 工具核对。
常见问题
- apple-app-site-association 文件应该放在哪里?
- 放在 https://你的域名/.well-known/apple-app-site-association,不加 .json 后缀,通过有效证书的 HTTPS 返回,不能重定向。权限里写的每个子域名(例如 www.example.com)都要有自己的文件。example.com 上的文件也适用于 applinks:*.example.com 这样的通配写法。
- 为什么通用链接打开的是 Safari 而不是 App?
- 常见原因:文件被重定向或被拦截(403、404),App ID 里的 Team ID 写错,某条 exclude 规则先匹配到了,或者链接和当前页面在同一个域名下(Safari 会继续留在浏览器里)。在地址栏直接输入网址永远不会打开 App。可以在“备忘录”里长按链接来测试。
- appIDs/components 和 appID/paths 有什么区别?
- appIDs 加 components 是现行格式,可以匹配路径、查询串和片段。appID 加 paths 是旧格式,只匹配路径,用“NOT ”前缀表示排除。苹果两种都支持,但不建议在同一项里混用。
- "/buy/*" 能匹配 /buy 吗?
- 能。我们用苹果的 swcutil 测试时,结尾斜杠不影响结果:"/buy/*" 能匹配 /buy 和 /buy/,"/help" 也能匹配 /help/。如果斜杠后至少要有一个字符,请写 "/buy/?*"。
- 改了文件多久生效?
- 从 iOS 14 和 macOS 11 起,设备从苹果 CDN 获取文件,CDN 会在 24 小时内来抓取。App 安装后,设备大约每周检查一次更新;重装 App 会重新获取。测试时可以在权限里加 ?mode=developer,让设备直接读取你的服务器。
- AASA 文件需要签名吗?
- 不需要。从 iOS 9 起,通过 HTTPS 返回的普通 JSON 文件就够了。只有 iOS 8 上的接力和网页凭据才需要签名。