我们正在尝试在用户访问某个网址时启动我们的原生应用。
我们的应用已注册了自定义网址架构,因此部分已完成 问题是实施后备。
我想要的是这样的:
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);
当用户访问网址时,它会打开应用。但是,当用户返回浏览器时,将执行回退代码,并且用户将看到Web版本。
这只是一个缺点。下次用户访问URL时,应用程序无法打开(仅在Android上测试),原因不明。由于我们不使用301重定向,因此我不明白为什么它会缓存重定向。
我几乎放弃了,并且很可能会实施一个视图,说“如果您有应用程序,请单击此处,否则请单击此处”。
在您提出之前我无法从网络版打开应用程序,因为它纯粹是用JS编写的,而window.location
会中断ajax请求和图像加载。