1

当用户访问某个 URL 时,我们正在尝试启动我们的本机应用程序。

我们的应用程序已经注册了一个自定义 URL 架构,因此这部分已经完成。
问题是实现回退。

我想要的是这样的:

try {
  # Redirect to the app
} catch(e) {
  # Redirect to the web version
}

这显然不起作用,因为window.location不会引发异常。

我试过这样做:

window.location = 'some-schema://some/url';
setTimeout(function() { window.location = '/some/url'; }, 100);

当用户访问 URL 时,它会打开应用程序。但是,当用户返回浏览器时,会执行回退代码并且用户会看到 Web 版本。

这只是一个缺点。下次用户访问该 URL 时,由于某种未知原因,应用程序无法打开(仅在 android 上测试)。由于我们不使用 301 重定向,我不明白为什么它会缓存重定向。

我几乎放弃了,并且很可能会实现一个视图,即“如果您有应用程序,请单击此处,否则请单击此处”。

在您询问之前,我无法从 Web 版本打开应用程序,因为它纯粹是用 JS 编写的,并且会window.location中断 ajax 请求和图像加载。

4

0 回答 0