Appsflyer OneLink重载/直输地址跳转App Store而非已装应用问题咨询
AppsFlyer OneLink 跳转异常修复方案
根因说明
你遇到的两类跳转异常均为OneLink 直接深度唤起校验逻辑缺失导致,确实和Cookie存储有关:地址栏输入、页面重载场景都属于无来源的直接访问,默认不会携带OneLink用于判断是否需要唤起App的校验Cookie,因此直接触发了兜底的应用商店跳转逻辑。
分步修复步骤
1. 后台配置校验
先确认OneLink后台配置符合预期:
/login路径对应的深度链接参数af_dp已正确配置为App内部路由(如yourapp://login)- 关闭全局「未安装App时强制跳转应用商店」开关,改为仅唤起失败后跳转
- iOS的AASA文件、安卓的Asset Links文件已覆盖
/login路径,无路径拦截规则
2. 直接访问场景Cookie补全
地址栏输入属于无来源的直接导航场景,需要主动注入OneLink校验Cookie:
// 页面加载时判断是否为直接访问 if (performance.getEntriesByType('navigation')[0].type === 'navigate' && !document.referrer) { // 注入强制深度跳转Cookie,有效期5分钟,作用域覆盖你的站点域名和OneLink域名 document.cookie = 'af_force_deeplink=true; path=/; domain=.yourdomain.com; max-age=300'; document.cookie = 'af_dp=yourapp://login; path=/; domain=.yourdomain.com; max-age=300'; }
3. 页面重载场景逻辑优化
页面重载会清空OneLink的临时校验标记,需要通过sessionStorage保留唤起状态:
// 页面重载前保存唤起标记 window.addEventListener('beforeunload', () => { if (location.pathname === '/login') { sessionStorage.setItem('enable_af_deeplink', '1'); } }); // 页面加载后优先执行唤起逻辑 window.addEventListener('load', () => { if (sessionStorage.getItem('enable_af_deeplink') === '1') { sessionStorage.removeItem('enable_af_deeplink'); // 优先触发App scheme唤起,2秒无响应再走OneLink默认逻辑 location.href = 'yourapp://login'; setTimeout(() => { location.href = '你的OneLink访问地址'; }, 2000); return; } });
验证步骤
- 清除浏览器所有缓存和Cookie后,直接在地址栏输入
你的站点域名/login,确认已安装App时优先唤起,未安装时跳转应用商店 - 打开
/login页面后点击刷新,确认已安装App时优先唤起,无跳应用商店问题
内容的提问来源于stack exchange,提问作者pta
相关产品推荐
相关产品推荐

