我有一个网页,我们称之为entry.html
。
当用户进入此页面时,javascript 代码(见下文)正在尝试将用户深层链接到本机 iOS / Android 应用程序。
如果深层链接失败(可能是设备上没有安装应用程序),用户应该“退回”到另一个页面——让我们调用它fallback.html
。
这是正在运行的 javascript 代码entry.html
:
$(function(){
window.location = 'myapp://';
setTimeout(function(){
window.location = 'fallback.html';
}, 500);
});
这是全网推荐的标准深度链接方法;尝试深度链接,如果超时触发,则意味着深度链接没有发生 - 所以回退。
这工作正常,只要应用程序安装在设备上。
但如果未安装应用程序,这是尝试深度链接时的行为:
移动 Safari:我看到一条警告消息说“Safari 无法打开此页面...”,然后它会正确回退到fallback.html
- 这是预期的行为。
移动 Chrome是我的问题。
当应用程序未安装时,浏览器实际上被重定向到myapp://
url,这当然是无效的 - 所以我得到一个“未找到”页面,并且不会发生回退。
最后- 我的问题是:
如何修复我的代码,以便在移动 Chrome 上也会发生回退?就像移动 Safari 一样?
注意:我看到 LinkedIn 移动网站可以正确执行此操作,无论是否安装了应用程序,Safari 和 Chrome,但我无法追踪负责它的代码 :(
注意2:我尝试附加一个iframe
而不是window.location = url
,这仅适用于Safari,即使安装了应用程序,移动Chrome在附加iFrame时也不会进行深度链接。
谢谢大家!
更新:
我找到了一个不错的解决方案,并回答了我自己的问题。请参阅我的解决方案接受的答案。