iOS 8上的企业应用更新分发

Pat*_*ini 110 xcode ios enterprise-distribution ios8

我有一个企业应用程序,我通过itmsURL 分发:

itms-services://?action=download-manifest&url=itms-services://?action=download-manifest&url=https://$MY_PLIST_URL.plist
Run Code Online (Sandbox Code Playgroud)

在iOS 7上,下载和更新都可以正常工作.但是,在iOS 8上,我收到错误:

LoadExternalDownloadManifestOperation: Ignore manifest download, already have bundleID: com.mycom.MyApp
Run Code Online (Sandbox Code Playgroud)

在我的plist中,我有

<key>bundle-identifier</key>
<string>com.mycom.MyApp</string>
<key>bundle-version</key>
<string>0.2.2</string>
Run Code Online (Sandbox Code Playgroud)

在iOS 8上的应用程序中,我运行的是0.2.1版本

Ant*_*ine 90

我的app分发也遇到了这个问题.我们能够通过使用下载分发'伪造'.plist中的包标识符来解决这个问题,保持我们的ipa包标识符相同.

例如,在你的plist中:

<key>bundle-identifier</key>
<string>com.mycom.MyApp</string>
<key>bundle-version</key>
<string>0.2.2</string>
Run Code Online (Sandbox Code Playgroud)

com.mycom.MyApp更改为com.mycom.MyApp.ios8fix

该应用程序将使用新的应用程序图标进行安装,该图标将在安装后消失.

如果您已经安装了该应用,则在安装过程中甚至会看到一个新的应用图标.安装完成后,此图标将消失,但您现有的应用版本将会更新.通过全新安装,安装图标将消失,安装的应用程序图标将显示在原位.

看起来iOS 8正在缓存包标识符,并将请求的安装与这些缓存的安装进行比较.大多数时候你只会看到一个要求安装的弹出窗口,但没有任何反应.

正如Sean已经注意到的那样,这与xCode 6 GM和官方iOS 8版本一起出现.从未安装过您的应用程序的设备在安装应用程序时没有任何问题.

  • 它可以在某些设备上运行,但是其他一些设备仍然显示了先前的bundle id,即使我更改了plist文件. (3认同)
  • 在我的情况下,更改捆绑标识符在某些设备上工作 - 不是全部.改变plist的路径后,我自己解决了这个问题. (3认同)

jlp*_*ita 24

这对我来说效果更好,无需触摸您的清单或其他技巧(非常适合plist自动生成的Xcode Server ):

  1. 下载iExplorer(http://www.macroplant.com/iexplorer/)
  2. 插上您的设备
  3. 删除"媒体>下载"中的所有文件
  4. 重启设备

这会重置设备缓存,现在您可以像往常一样安装应用程序.

  • 谢谢,你是一个救生员.我使用的是不含Macroplant的iBrowse(http://www.ibrowseapp.com) (3认同)
  • 这对我们很有用......在删除Media - > Downloads的内容后,不要忘记重启设备 (2认同)

小智 16

我有同样的问题.我转载它:

1)从iOS 7升级到iOS 8 GM时安装了我的应用程序

2)在iOS 8中删除它

3)尝试通过itms-services安装它:使用相同的包名称

当我尝试更改服务器plist中的bundle-identifier(而不是在应用程序Info.plist中)时,它工作正常(应用程序下载时没有"阴影"图标).但它看起来像一个苹果虫.

  • 值得注意的是,在那篇bulldozer.io文章中,它表示"似乎安装了开发人员证书的设备不会受到影响".不清楚"开发人员证书"是什么意思(我猜一个"覆盖"相关应用程序的开发配置文件),但这可以解释在不同设备上重现问题的问题. (4认同)

Fra*_*ans 11

已接受的解决方案不再适用于iOS9.

我的理解是,Apple已经通过阻止adhoc二进制文件替换从App Store下载的股票应用程序或应用程序来关闭严重的iOS安全漏洞.有关背景信息,请参阅此文章(CVE-2015-3722/3725和CVE-2015-3725):

https://www.fireeye.com/blog/threat-research/2015/06/three_new_masqueatt.html

考虑到安全隐患,我不希望在将来的IOS版本中改变这种行为.替代选择似乎是:

  • 在安装adhoc之前删除App Store版本
  • 通过更改应用和分发plist中的包ID,将adhoc分发为"新"应用
  • 使用TestFlight


小智 9

Gil说的似乎是正确的,但更具体地说,我发现我还需要在server.plist中增加bundle-version字符串:

    <key>bundle-version</key>
    <string>3.2.2</string>
Run Code Online (Sandbox Code Playgroud)

这至少允许您完成OTA安装.

(对不起......会添加评论,但我太多了n00b.)


ale*_*tea 9

看看这个答案这个答案.

您可以在没有任何黑客的情况下解决此问题,对于iOS8,您必须assets在清单.plist文件的密钥display-imagefull-size-image密钥中包含.在为企业和临时部署保存存档时,它们在Xcode 5中可用,但不是必需的.

我在github上创建了一个带有install-manifet.plist文件模板的要点.

  • 我实际上遇到了这个问题,包括这两个键. (7认同)