Android App Links跳转逻辑问题:需实现亚马逊式场景适配
解决方案:调整Asset Links配置+网站端控制
你的核心问题出在assetlinks文件中使用的delegate_permission/common.handle_all_urls权限——这个权限会强制系统将所有匹配域名的URL直接路由到你的App,完全跳过浏览器的判断逻辑,不管点击行为是来自站内还是站外。
要实现亚马逊的站内留浏览器、站外跳App的逻辑,需要做以下两步调整:
1. 修改Asset Links文件的权限关系
将delegate_permission/common.handle_all_urls替换为delegate_permission/common.handle_urls,修改后的assetlinks内容如下:
[ { "relation": [ "delegate_permission/common.handle_urls" ], "target": { "namespace": "android_app", "package_name": "com.example.com", "sha256_cert_fingerprints": [ "CA:C0:...." ] } } ]
两者的核心区别:
handle_all_urls:强制所有匹配URL跳转App,浏览器无干预权handle_urls:允许浏览器根据点击来源决定是否跳转App,站内点击时浏览器会默认保留在当前页面,站外点击则触发App跳转
2. 网站端补充控制(可选但更可靠)
为了确保站内链接100%留在浏览器,可以在网站的站内链接上添加以下处理:
- 给所有站内链接添加
rel="noopener noreferrer"属性,明确告诉浏览器不要触发外部App跳转 - 或者通过JavaScript拦截站内链接的点击事件,强制使用
window.location.href加载,绕过系统的App Links检测逻辑
为什么之前的尝试无效?
你之前在MainActivity处理referer、Manifest加过滤规则的思路方向不对——因为handle_all_urls权限会让系统在到达App的Intent处理逻辑之前就直接跳转App,所以App内的任何拦截都不会生效。只有先调整assetlinks的权限,让浏览器有权决定是否跳转,后续的控制逻辑才能起作用。
内容的提问来源于stack exchange,提问作者Melle Linschoten
相关产品推荐
相关产品推荐

