gpt4 book ai didi

javascript - 通过 JavaScript 打开一个应用程序 (iOS/Android),回退重定向到 App/Play 商店(2016 版)

转载 作者:可可西里 更新时间:2023-11-01 03:48:40 24 4
gpt4 key购买 nike

给定:网站、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。

最佳答案

在 2016 年,仅靠 Javascript 是不可能实现的

您仍然可以在 Android 上使用该方法,但 Apple 在 iOS 9.2 中进行了更改,这意味着这在 iOS 设备上基本上没有用。


它过去是如何在 iOS 上运行的

过去的做法是尝试通过将 window.location 设置为您想要的自定义 URI 路径来使用 Javascript 打开应用。

window.location = “imdb://title/tt3569230”;

应用未安装

问题在于,当应用程序未安装时,它会显示“无法打开页面”错误。我相信你们都看过了。这是深层链接的祸根。在 iOS 7 和 iOS 8 期间有一个可以绕过这个的辉煌时期,但黄金时代已经过去。

为了避免这种情况,您必须在您的页面中添加一些 Javascript,以便您重定向到 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]" 模态从 Javascript blocking 模态更改为 non-blocking 模态。这意味着当您尝试通过 Javascript 重定向到自定义 URI 方案打开应用程序时,模式将不再阻止 Javascript 执行,结果是回退重定向到 App Store 将在用户之前立即执行 可以点击“打开”按钮

Branch.io(完全披露:我是 Branch 团队的一员),我们在 iOS 9.2 测试版中看到了这一点,并希望我们的 Apple 雷达(错误报告)和有影响力的合作伙伴能够激励 Apple 在发布前解决它。不幸的是,对于 iOS 开发人员来说,事实并非如此。 Apple 对我们的担忧的回应非常清楚地表明了他们希望每个人都做的事情:采用 Universal Links。


2016年解决方案

要使单个链接在任何地方都有效(包括路由到已安装的应用程序或未安装的后备 Web URL)的唯一方法必须包括在 iOS 上使用通用链接。当然,通用链接实际上并不是在 iOS 的所有地方都受支持,因此在某些特定的边缘情况下仍然需要自定义 URI 方案(Chrome 和 Gmail 是两个重要的例子)。您需要检测这些并构建自定义处理。

大多数公司没有足够的资源来为此投入一名(或两名)全职工程师,这就是为什么 Pinterest、Tinder、Airbnb、Jet.com、Yummly 等都采用了像 Branch.io 这样的链接平台或 Firebase 动态链接。

关于javascript - 通过 JavaScript 打开一个应用程序 (iOS/Android),回退重定向到 App/Play 商店(2016 版),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41123611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com