iOS 8中openUrl itms-services在当前应用程序中不存在

19

在iOS 6或7中,当我使用一个itms-services://XXXX的URL调用UIApplication openUrl来安装我的应用程序的新版本(使用ipa文件进行企业级部署)时,该应用程序会退出到主屏幕。

在iOS 8中,情况已经发生了改变。现在应用程序继续运行,就好像什么都没有发生一样,但是如果我转到主屏幕,我可以看到我的应用程序图标变灰,并显示下载进度为66%的饼状图以及下方的文本“正在下载...”。 如果我等待一段时间(不到一分钟),应用程序将被正确安装,并且我可以再次启动我的应用程序。

有其他人遇到过这种情况吗?是否有任何相关文档?只要有记录,我就可以接受行为上的更改,但是我没有看到任何相关的文档。


我也遇到了同样的“困难”。我们建立了一个提供内部分布式应用程序(类似于内部AppStore)的应用程序。在iOS7中,您会收到有关系统对话框的通知,询问用户是否安装应用程序。在iOS8中,不再发送这些通知。以前,我们可以启动计时器并轮询要安装的应用程序的预期URL方案,以向用户提供一些活动指示器。使用iOS8,我甚至无法区分用户是否选择取消安装。:(也找不到任何文档。 - Christian
3个回答

6
虽然强制使应用程序崩溃从技术上讲可以起作用,但更好的解决方案(允许用户保留应用程序状态)是通过执行以下操作来将应用程序后台化,启动itms-services链接。
[[UIApplication sharedApplication] performSelector:@selector(suspend)];

我们在一个用于向测试人员分发测试版本的应用程序中使用它,它非常有效,并消除了测试人员尝试安装应用程序并且该应用程序停留在前台的混乱。 它还允许他们返回到我们的分发应用程序,并在原地继续操作。

很棒.. 我假设这是一个私有 API?显然不是问题,但我只是想确认一下...你是在调用 openURL: 之后立即调用它吗?因为我不确定如果那样的话,安装弹窗是否仍会显示? - liamnichols
1
是的,在打开URL之后 - 弹出窗口仍然会显示,通常在应用程序暂停后。我们只在iOS 8及以上版本中执行此操作,因为在旧版本中没有必要暂停应用程序。如果您的应用程序正在安装其他应用程序,我不建议尝试将其放入应用商店中。 - wottle
如果我用Safari浏览器遇到同样的问题怎么办? - Mike
很遗憾,我没有一个好的解决方案适用于Safari。我怀疑在Safari中你不会想要做任何可能导致它崩溃的事情,所以你只能在网页上进行一些消息传递,让用户知道他们需要在点击安装链接后按下主页按钮。 - wottle
Swift 中没有 suspend。有什么想法吗? - Bagusflyer

0

是的,在iOS8上,使用Safari点击下载链接时也会出现相同的行为。

我不确定他们为什么引入了这个变化,但实际上没有什么办法可以解决它(除非你强制让你的应用程序崩溃,比如exit(0);)。

此外,itms-services URL方案未经记录,技术上属于私有API。从经验来看,您不能提交使用它的应用程序到App Store。


itms-services是否未记录在案?早期文档位于http://developer.apple.com/library/ios/#featuredarticles/FA_Wireless_Enterprise_App_Distribution/Introduction/Introduction.html,但该链接现已失效。苹果公司是否删除了所有关于itms-services的文档?我无法在任何地方找到它!废弃某些东西是一回事,但仅仅隐藏它就是不好的做法。 - Andreas Paulsson
是的,这不好...我记得很久以前看到过一些东西,但再也找不到了,所以认为我看到的可能不是官方的苹果文档...关于文档真的很奇怪,当iOS7推出时,他们要求清单必须是https链接,但并没有明确说明。 - liamnichols
我非常确定有关于这个的官方文档,甚至Xamarin(我正在使用)也有一个链接指向同样的页面,但现在已经失效了:http://developer.xamarin.com/guides/ios/deployment,_testing,_and_metrics/app_distribution_overview/。 - Andreas Paulsson
在《iOS Deployment Reference》(iBooks免费)一书中,封面上标有iOS 8,这应该表明它也适用于iOS 8,其中有关于如何使用itms-services链接构建网站以分发应用程序的说明。因此,有一些关于iOS 8的itms-services文档,但我找不到任何参考文档。 - Andreas Paulsson

0
我也遇到过类似的问题。我们内部应用商店有一个网页,当我点击链接时,会弹出提示询问是否安装,当我选择是后,Safari就一直停在那里。应用程序正在主屏幕上下载,但在iOS 7下,Safari会被推到后台,您可以看到应用程序正在下载到哪里以及其进度。现在似乎什么都没有发生。我很想纠正这个问题。也许.itms-services协议使用的.plist文件已经发生了变化。这个协议不是私有的,只是为企业部署保留的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接