本文将帮助您了解和排查在实现应用链接或通用链接时遇到的常见错误。
本页内容
应用链接实现方面的常见设置错误
以下是 Android 应用链接的常见设置错误及修正方法。
网页错误
- Host 属性格式正确性:确保 host 是格式正确的网址,例如 google.com 或 www.google.com。
- 缺少数字资产链接 JSON 文件:每个在 intent 过滤器中声明的唯一主机名都应有对应的该文件。例如,https://[domain.name]/.well-known/assetlinks.json。
- 注意:如果 Google 未抓取 JSON 文件,也可能会出现此错误。例如,当抓取工具访问权限在 robots.txt 文件中被拒绝时。您可以检查 JSON 文件网址,确定是否属于这种情况。
- 数字资产链接 JSON 中的应用软件包名称有误:此软件包名称应与应用的 build.gradle 文件中声明的应用 ID 一致,并且应用应可在 Google Play 商店中下载。
- 数字资产链接 JSON 中的应用指纹 (sha256_cert_fingerprints) 错误。详细了解如何排查此错误。
- 数字资产链接 JSON 中的 content-type 不正确:所有网域的 content-type 都应为“application/json”。
- 数字资产链接 JSON 文件只能通过 http:// 访问,而无法通过 https://访问:无论应用声明 http:// 还是 https:// 作为应用链接,出于安全考虑,JSON 文件都必须始终托管在 https:// 上。
- 数字资产链接 JSON 文件只能通过重定向访问:此文件必须处于可直接访问状态才能验证应用的所有权,且不包含任何 301/302 重定向。
- Robots.txt 文件阻止对 /.well-known/assetlinks.json 的抓取访问:此文件必须可由漫游器访问。
应用错误
- 应用清单中缺少包含 android:scheme 属性的 <data> 标记
- intent 过滤器中缺少 ACTION_VIEW intent 操作属性 (android.intent.action.VIEW)
- intent 过滤器中缺少 DEFAULT 和 BROWSABLE 类别作为属性 (android.intent.category.DEFAULT 和 android.intent.category.BROWSABLE)
- intent 过滤器中缺少 android:autoVerify=”true” 属性
- 包含重定向网址:所有网址都必须直接将用户引导至应用。
- 在逻辑上相互矛盾的应用链接声明:重叠的应用链接网址,例如:https://example.com/ 触发 activity X,而 https://example.com/Y 触发 activity Y。在这种情况下,Android 系统会显示应用选择对话框(中断应用链接)。深层链接验证器目前不会检测到此问题,并且我们不建议采用这种实现方式。
通用链接实现方面的常见设置错误
以下是 iOS 通用链接的常见设置错误及修正方法。
网页错误
- 网域上缺少关联文件:如果网站使用多个子网域(例如 example.com、www.example.com 或 support.example.com),则每个子网域都需要在“关联网域授权”中拥有自己的条目,并且每个子网域都必须提供自己的 apple-app-site-association 文件。
- 关联文件托管位置不正确:关联文件必须与通用链接托管在相同的网域中。不允许重定向。例如,如果您的通用链接是 https://photo.google.com/album,则关联文件必须位于 https://photo.google.com/.well-known/apple-app-site-association 或 https://photo.google.com/apple-app-site-association。
- 注意:/.well-known/ 是首选方法。
- Apple App Site Association (AASA) 文件添加了 .json 扩展名:不应添加 .json,apple-app-site-association.json 是错误的。
- 提供的关联文件的 content-type 为 MIME plain/text:必须设为 application/json。
- 超出文件大小限制:关联文件必须小于 128KB(未压缩的大小)。
- 应用 ID 配置不正确:应用 ID 必须由 Team ID 和 Bundle ID 通过英文句点 (.) 连接生成。
- 网域上存在 robots.txt 或其他机制,阻止抓取工具访问关联文件
- 逻辑上相互矛盾的通用链接声明:“paths”键将按顺序处理。
示例 1
https://apple.com/wwdc/ 将触发通用链接。
{
"appID": "ABCD1234.com.apple.wwdc",
"paths": [ "*", "NOT /wwdc/*" ]
},
示例 2
第二个应用 (EFGH5678.com.apple.wwdc) 的通用链接始终不起作用。
{
"appID": "ABCD1234.com.apple.wwdc",
"paths": [ "*" ]
},
{
"appID": "EFGH5678.com.apple.wwdc",
"paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
}
应用错误
- 使用自定义协议:使用 https 或 http。
- 缺少“applinks:”前缀:所有关联网域的格式都应类似于 applinks:yourdomain.com。
- 关联网域配置不当:例如,.google.com 与 www.google.com 匹配,但不与 google.com 匹配。如果您想为 google.com 和子网域(例如 www.google.com)声明关联,则应声明 applinks:*.google.com 和 applinks:google.com。
注意:深层链接验证器不会对 AASA JSON 文件的有效性进行应用级检查。
最佳实践
- 在手机上进行测试:将网址发送到已安装应用的手机。使用没有内置浏览器的应用点击该链接(Google Keep 可能是测试此功能的理想工具)。
- 如果应用打开,则表示该链接是有效的通用链接。
- 如果应用未打开,或者系统显示确认对话框来询问是否打开应用,则说明您没有有效的通用链接。
- 在这种情况下,应用不会在 Appify 中打开。
- 如果应用用于应用互动广告系列,则相应广告会被拒登。
相关链接
本页面可能包含使用 AI 技术翻译的内容。AI 翻译未必准确无误。