Universal Links 和 App Links 校验器
粘贴你的 apple-app-site-association 或 assetlinks.json,赶在 Apple 或 Google 之前发现问题。
发布前检查
- 在链接使用的每个域名的 /.well-known/ 下通过 HTTPS 提供文件,不要重定向。
- 以 application/json 类型发送(apple-app-site-association 不带 .json 扩展名)。
- 使用用户实际安装版本的签名证书:Google Play App Signing 有自己的证书。
- 修改文件后请重新安装应用——设备会缓存该文件。
工作原理
- 文件在你的浏览器中校验:结构、应用 ID、路径和证书指纹。
- 浏览器无法获取其他网站的文件,所以请粘贴内容而不是网址。
- 有效的文件只完成了一半工作——另一半请看下面的检查清单。
为什么 Universal Links 打开的是 Safari 而不是应用
iOS 会在应用安装时(而不是点击链接时)通过 Apple 的 CDN 下载 apple-app-site-association。如果那一刻文件缺失、被重定向或格式错误,链接会一直在 Safari 中打开,直到重新安装应用或缓存刷新。
常见原因:appIDs 条目只用了 bundle ID,前面没有 10 位的 Team ID;paths 或 components 与链接不匹配;文件通过重定向提供,或放在了错误的主机上(www 与裸域名);或者应用的 Associated Domains 权限中缺少“applinks:”加上确切的主机名。
还有一种:在与当前页面相同的域名上点击链接,按设计会留在 Safari 中。请从备忘录、信息或其他网站进行测试。
为什么 Android App Links 打开的是浏览器
Android 会为 intent filter 中带 android:autoVerify="true" 的每个主机校验 assetlinks.json。只要其中任何一个校验失败,所有链接都不会自动打开应用。
大多数失败出在指纹上:文件中列出的是调试密钥或上传密钥,而用户安装的是由 Google Play App Signing 签名的版本。从 Play Console 的“应用完整性”中复制 SHA-256,并列出为用户安装的版本签名的每一个密钥。
在 Android 12 及以上版本中,可以用 adb shell pm get-app-links 加上包名查看状态,修复文件后重新运行校验。
常见问题
apple-app-site-association 必须放在哪里?
放在 https://your-domain/.well-known/apple-app-site-association,通过 HTTPS 提供,不能有重定向,以 application/json 类型提供,且不带 .json 扩展名。
assetlinks.json 必须放在哪里?
放在 https://your-domain/.well-known/assetlinks.json,通过 HTTPS 提供,不能有重定向,以 application/json 类型提供。
为什么不能通过网址校验?
除非对方网站允许,否则浏览器不允许网页读取其他网站的文件,而这些文件通常不允许。请打开该网址,复制内容并粘贴到这里。
我需要哪个 SHA-256 指纹?
为用户安装的版本签名的证书。使用 Google Play App Signing 时,那是 Play Console 中显示的应用签名密钥,而不是你的上传密钥。如果你还分发用自己密钥签名的版本,两个都要添加。
文件已经修好了,链接还是打开浏览器,为什么?
设备会缓存校验结果。iOS 上请重新安装应用;Android 上请重新运行校验或重新安装。同时检查应用的 Associated Domains 或 intent filter 是否写明了确切的主机名。
更多免费工具
- App Store 和 Google Play 二维码生成器
- App Store 和 Google Play 链接生成器
- 智能链接跳转测试
- apple-app-site-association 和 assetlinks.json 生成器
一个链接和二维码覆盖所有商店
SetLinks 把每位访问者送到对应的商店,并统计每次点击。免费开始。
创建智能链接