iOS端Chrome v128.0.6613.98中带Deeplink的Web应用报错问题
iOS Chrome v128中Firebase动态链接未装App时弹出应用跳转对话框的问题分析与解决
问题原因
- Chrome v128对iOS平台的App唤醒检测逻辑做了更新:即使Firebase动态链接配置了网页 fallback,Chrome仍会优先触发App跳转的授权提示,而非直接执行fallback逻辑。
- Firebase动态链接的原生逻辑是先尝试唤醒App,失败后再跳转网页,但新版本Chrome的检测机制更激进,在App唤醒失败前就弹出了「打开另一应用」的对话框,导致用户看到错误提示后才能进入网页。
解决方法
1. 自定义App唤醒逻辑替代Firebase自动跳转
放弃直接使用Firebase动态链接的自动跳转,改用前端JS手动处理唤醒与fallback,避免触发Chrome的默认检测:
function handleDeepLink() { const appScheme = "your-app-scheme://target-path"; // 替换为你的App Scheme const fallbackUrl = "https://your-web-app.com/target-path"; // 替换为网页地址 const wakeupTimeout = 1000; // 记录唤醒开始时间 const start = Date.now(); // 尝试唤醒App window.location.href = appScheme; // 超时后判断是否唤醒成功,未成功则跳转网页 setTimeout(() => { if (Date.now() - start < wakeupTimeout + 200) { window.location.href = fallbackUrl; } }, wakeupTimeout); }
将原页面中指向Firebase动态链接的元素,改为触发这个函数(比如<button onclick="handleDeepLink()">打开应用/网页</button>)。
2. 针对Chrome iOS做特殊处理
通过用户代理判断是否为Chrome iOS,直接跳过App唤醒步骤,直接跳转网页:
const userAgent = navigator.userAgent; if (/CriOS/.test(userAgent)) { // 对于Chrome iOS用户,直接跳转网页fallback地址 window.location.href = "https://your-web-app.com/target-path"; } else { // 其他浏览器正常使用Firebase动态链接 window.location.href = "your-firebase-dynamic-link-url"; }
3. 检查并修复Universal Links配置
确认你的App的Universal Links配置完全正确:
- 苹果开发者后台已配置对应的关联域名
- 网站根目录的
apple-app-site-association文件内容正确且可访问 - Firebase控制台中已正确关联App的Universal Links信息
正确的配置能让Chrome更准确地识别App是否已安装,减少错误的跳转提示。
关于禁用对话框的说明
无法直接禁用Chrome的「此网站尝试打开另一应用」对话框——这是浏览器的安全机制。但通过上述方法,可以避免触发这个对话框的场景,让未安装App的用户直接进入网页。
内容的提问来源于stack exchange,提问作者rya
相关产品推荐
相关产品推荐

