给出:网站,iOS和Android应用程序,已注册的urlscheme“ myapp://”。
目标:网站上的链接显示了安装了应用程序的iOS / Android设备。单击该链接应打开该应用程序并调用特定的逻辑(由应用程序处理,本质上类似于苹果公司的“通用链接”,但不会遮盖网站链接)。
由于安全限制,如果没有webview cookie魔术,检测应用是否已安装很麻烦。鉴于此,尝试通过JavaScript打开应用并在失败后调用后备重定向的最佳方法是什么?
此线程的解决方案:Is it possible to register a http+domain-based URL Scheme for iPhone apps, like YouTube and Maps?在iOS10上不起作用。不确定Android。
[您仍然可以在Android上使用此方法,但是Apple在iOS 9.2中进行了更改,这意味着这在iOS设备上基本上没有用。
过去的做法是通过将window.location设置为所需的自定义URI路径来尝试使用Javascript打开应用程序。
window.location = “imdb://title/tt3569230”;
问题在于,当未安装该应用程序时,它会显示“无法打开页面”错误。我确定你们都看过了。这是深层链接的祸根。在iOS 7和iOS 8中曾经度过了一段辉煌的时期,可以绕过这个时期,但是黄金时代已经过去。
为了避免这种情况,您必须在页面上添加一些Java脚本,然后才能重定向到App Store。这样,用户就不会在屏幕上看到错误。window.location = 'imdb://title/tt3569230';
setTimeout(function() {
window.location = 'itms-apps://itunes.apple.com/us/app/imdb-movies-tv/id342792525'
}, 250);
已安装应用程序
现在发生的事情是,在iOS 9中,Apple将
Open in“ [app]”]]模式从Java语言
blocking
模式更改为non-blocking模式。这意味着当您尝试通过重定向到自定义URI方案的Javascript打开应用程序时,该模式将不再阻止Javascript的执行,结果是回退到App Store的后备重定向将立即执行点击“打开”按钮。[Branch.io(全面披露:我在Branch团队中,我们在iOS 9.2 Beta中看到了这一点,并希望我们的Apple雷达(错误报告)和有影响力的合作伙伴能够激励Apple解决此问题,然后再发布。对于iOS开发人员来说不幸的是,事实并非如此。苹果公司对我们的担忧做出的回应清楚地表明了他们希望每个人都要做的事情:采用通用链接。2016年解决方案