问题描述
我们正在开发一款可在移动浏览器(主要是 Chrome、Firefox、Android 内置的浏览器和 iOS 中的 Safari)中运行的网络应用。它有一个链接,可将您带到移动应用。我们不拥有移动应用程序,因此我们无法以任何方式对其进行修改。我们只获得了如下深层链接:myapp://someotherstuff
。
问题是,当我遵循它时,例如在 Chrome for Google Pixel 4 中,我在控制台中收到此警告:
只是为了更多信息,在桌面上我收到这个错误:
我想捕获此错误以向用户显示一条反馈消息,例如:“您的应用似乎尚未安装。您可以从...下载它”。
首先,我如何触发导航(不同的方式):
- 用
window.open(deepLink,'_self')
(example)。 -
手动使用
href="deepLink"
(相同的 example)创建可见的锚标记。 -
以编程方式使用
href="deepLink"
(相同的 example)即时创建隐藏的锚标记。
其次,我如何尝试捕获错误(不同的方式):
window.onerror = function(message,source,lineno,colno,error) {
console.log('Error captured here');
}
- 使用Chrome Intents。它们适用于 Chrome,但我不确定它们是否适用于非 Chrome 或 Android 浏览器(如 Safari)。在我看来,这像是 2014 年的旧功能(也许我错了)。
- 无法使用 App Links,因为它们需要更改我们不拥有的网页的服务器。
我目前的解决方法:
- 手动或以编程方式点击锚标签中的链接
- 将超时设置为 3 秒。如果 3 秒后该页面仍然可见(带有
document.visibilityState
),则表示浏览器无法打开该应用,因此我会显示该消息。
问题
误报。如果用户将焦点更改到另一个浏览器选项卡怎么办?我的 setTimeout 会认为页面的可见性是 hidden
,所以应用程序打开了。实际上不是。
问题:
向用户显示此“应用未安装”反馈的最佳方法是什么?你知道比这里描述的更好的吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)