【发布时间】:2015-05-29 21:04:27
【问题描述】:
-
我有一个带有下载应用按钮的 HTML 页面。当 iOS 用户点击时,它会通过 itms-services 将用户重定向到 App Store。我在这里使用的链接是:
window.location.replace("itms-apps://itunes.apple.com/app/id578505616");在移动浏览器上看起来像这样:
Facebook/Pinterest 有一个应用内浏览器,该浏览器在将用户重定向到他们的应用之前以带有取消或打开应用的警报框的形式请求用户同意,打开应用会打开外部链接。它看起来像这样:
警告框如下所示:
假设用户正在使用 iOS 设备。这里的预期行为是当单击打开应用程序按钮时,用户会被重定向到 App Store 应用程序。但是,在实际重定向发生之前,我们会看到大约 10 秒的延迟。
请看下面的视频:
https://www.youtube.com/watch?v=_dgh7v-IsK8
https://www.youtube.com/watch?v=_LFHeRnBFgg
https://www.youtube.com/watch?v=82Y-kj-pMyw
注意事项:
- 我似乎无法始终重现这一点。它有时只是可重现的。对不起!
- 一旦设备第一次延迟,所有后续链接到 AppStores 的速度都会很快,直到延迟大约 1 天。重新启动手机和/或清除浏览器缓存和/或重新安装 Facebook/Pinterest 无助于重现此问题。
- 我尝试将 itms-apps:// 链接替换为 https://itunes.apple.com/us/app/trusper-tips-tutorials-how/id578505616?mt=8,但我们仍然不时遇到延迟。
- 延迟似乎正好是 10 秒。
为什么会出现这种延迟?这似乎是一种糟糕的用户体验。
我目前的理论是问题出在苹果一方。原因是,一旦点击打开应用程序按钮,我们的网站以及 Facebook/Pinterest 应用程序都无法控制它。我想,一旦单击按钮,iOS 就会处理从一个应用程序到另一个应用程序的实际上下文切换。因此,它表明要么实际打开URL的系统调用挂起,要么打开App Store应用程序的系统调用是?但是,我无法证明其中任何一个是真的还是假的。谁有更好的解释?
[编辑 04/02/2015] 我可以确认到今天我的手机(iPhone 5S w/iOS 8.2)上仍然存在这个问题。 我做了一些进一步的研究,发现这篇文章我认为这是一个与 iOS 系统相关的错误:OpenUrl freezes app for over 10 seconds
【问题讨论】:
标签: ios objective-c app-store deep-linking openurl