Gmail内置浏览器打开邮件链接 如何配置可正常唤起关联Android应用
Android端Gmail点击邮件链接无法唤起应用解决方案
核心原因
- Gmail默认对未通过Android App Links验证的域名链接,会强制调用内置WebView打开,只有经过官方验证的绑定应用的域名、或者符合规范的Intent格式链接,才会跳过内置浏览器,直接触发系统打开方式选择弹窗或直接唤起对应应用。你测试的Tricount等服务可正常唤起,就是因为其已经完成了App Links全流程配置,被Gmail判定为合法的应用绑定域名。
- 你目前仅在应用本地配置了域名拦截,未完成域名端的所有权验证,Gmail无法识别该域名和你的应用存在绑定关系,因此会走内置浏览器加载逻辑。
可落地的解决步骤
1. 完成Android App Links官方验证(优先推荐,兼容性最好)
- 给应用Manifest中对应
links.mydomain.dev的Intent Filter添加android:autoVerify="true"属性,参考配置如下:
<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" android:host="links.mydomain.dev" android:pathPrefix="/activate/" /> </intent-filter>
- 在你的域名根目录部署验证文件:
https://links.mydomain.dev/.well-known/assetlinks.json,文件内容需要填写应用的包名、签名的SHA256指纹,可通过官方工具生成对应内容,注意该文件需要允许公网无鉴权访问,且响应头的Content-Type设置为application/json。 - 验证生效:应用安装到设备后,系统会自动拉取对应域名的assetlinks.json完成所有权校验,校验通过后该域名的所有链接都会被系统认定为和你的应用绑定。
2. 邮件链接改用Intent格式兜底
如果担心部分场景App Links验证不生效,可以将邮件内的激活按钮链接替换为Android专用的Intent格式链接,Gmail会直接识别该格式触发应用唤起逻辑,示例格式如下:
intent://links.mydomain.dev/activate/[替换为实际激活码]#Intent;scheme=https;package=替换为你的应用包名;S.browser_fallback_url=https://links.mydomain.dev/activate/[替换为实际激活码];end
该格式的链接点击后会优先唤起你的应用,应用未安装的情况下才会跳转指定的fallback_url,也就是你原有的引导跳转应用商店的兜底页面。
3. 兜底页面兼容方案
如果以上配置完成后仍有少数机型存在兼容问题,可以在你的WebView兜底页面添加JS唤起逻辑,页面加载时优先尝试触发应用唤起协议,唤起失败再展示引导跳转应用商店的内容。
内容的提问来源于stack exchange,提问作者dirkvranckaert
相关产品推荐
相关产品推荐

