4

我们的移动 Web 应用程序中有“扫描”按钮。移动 Web 应用程序完全基于 HTML5 和 Angular JS 和 javascript/ajax。我们需要基于用户代理 Android/Iphone 从 Google Play/iTunes 安装一些第三方原生扫描应用程序,如果应用程序已经安装,我们需要在用户单击扫描按钮时打开它。请在 javascript/Angular JS 中提出任何解决方案。我尝试了以下解决方案

setTimeout(function() {

      window.location = 'http://my-installation.url'; //to download
    }, 1000);

    window.location = 'myapp://custom-scheme-url'; //to open

但这种方法充满了问题。很多时候它会重定向到 googleplay/itunes,尽管应用程序已安装,有时当应用程序未安装时它正在打开myapp://custom-scheme-url,然后立即给出错误,如“此网页不可用错误”。我们也尝试了不同的超时值,但没有帮助。

请建议除了设置超时检查应用程序是否已安装之外,是否还有其他方法。

4

1 回答 1

0

您的部分问题可以通过使用iframe. 请参阅此票以获取更多详细信息。

具体来说:

如果您需要打开已安装的 iOS 应用程序并且还希望保留页面的功能,则 location.href = 'myapp://?params=...'; 将无济于事,因为如果 myapp:// 未注册,重定向会将用户引导到无法到达的目的地。

一个解法:

var frame = document.createElement('iframe');
frame.src = 'myapp://?params=...';
frame.style.display = 'none';
document.body.appendChild(frame);
于 2015-05-22T16:21:19.450 回答