Android App links 技术咨询:如何让已在网站的用户点击指定链接时继续停留在网站而非跳转至App
Android App links 技术咨询:如何让已在网站的用户点击指定链接时继续停留在网站而非跳转至App
嗨,我来帮你搞定这个问题!你碰到的是App Links配置里很常见的场景——我们需要区分「外部来源的跳转请求」和「网站内部的页面跳转」,不让后者触发App的跳转逻辑。
核心思路是在网站端做判断控制,因为App Links是系统层面的触发机制,App本身没法识别用户是不是从你的网站内部点的链接,所以得从前端下手:
- 第一步,给那些需要控制跳转的链接(比如List、Item页面的链接)添加点击事件监听。
- 第二步,判断当前用户是否正处于你的网站域名下:用
window.location.hostname就能拿到当前页面的域名,和你的网站域名对比就行。 - 第三步,如果是网站内部的用户点击,就阻止默认的链接跳转行为(避免触发系统的App Links检测),改用网站内部的跳转方式打开页面——比如原生JS的
window.location.href,或者如果你用了React Router、Vue Router这类前端路由框架,直接用框架的内部路由跳转方法(比如router.push())。
给你举个原生JS的实现例子,方便你参考:
// 假设你的List、Item链接都加了class="app-target-link" document.querySelectorAll('.app-target-link').forEach(link => { link.addEventListener('click', function(e) { // 替换成你自己的网站域名 const myWebsiteDomain = 'your-actual-domain.com'; if (window.location.hostname === myWebsiteDomain) { e.preventDefault(); // 阻止默认跳转,避免触发App Links window.location.href = this.href; // 用网站内部跳转打开页面 } // 如果是外部来源(比如短信、微信里点的链接),啥也不用做,正常触发App跳转 }); });
如果你的网站是单页应用(SPA),那更简单:直接把这些List、Item的链接配置成前端路由的内部跳转,不要用传统的<a>标签跳转。因为前端路由是在JS层面处理页面切换,不会发起完整的URL请求,自然不会触发系统的App Links匹配逻辑,用户就会一直停留在网站里。
另外补充一句:App端的intent-filter其实没法处理这个场景,因为系统触发App Links时,App拿不到用户点击链接的来源页面信息,所以核心的控制逻辑一定要放在网站端哦。
内容来源于stack exchange
相关产品推荐
相关产品推荐

