Universal Links 和 App Links 校验器

粘贴你的 apple-app-site-association 或 assetlinks.json,赶在 Apple 或 Google 之前发现问题。

发布前检查

还没有文件?生成一个 →

工作原理

为什么 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 是否写明了确切的主机名。

更多免费工具

一个链接和二维码覆盖所有商店

SetLinks 把每位访问者送到对应的商店,并统计每次点击。免费开始。

创建智能链接