【问题标题】:Enterprise App Update Distribution on iOS 8iOS 8 上的企业应用程序更新分发
【发布时间】:2014-11-04 12:43:14
【问题描述】:

我有一个通过itms URL 分发的企业应用程序:

itms-services://?action=download-manifest&url=itms-services://?action=download-manifest&url=https://$MY_PLIST_URL.plist

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

LoadExternalDownloadManifestOperation: Ignore manifest download, already have bundleID: com.mycom.MyApp

在我的 plist 中,我有

<key>bundle-identifier</key>
<string>com.mycom.MyApp</string>
<key>bundle-version</key>
<string>0.2.2</string>

在我的 iOS 8 应用上,我运行的是 0.2.1 版

【问题讨论】:

  • 您运行的是哪个版本的 iOS8。我听说有人在使用 Beta 5 时遇到类似问题。
  • 完全相同的问题。 iOS 8 通用。这些应用现在只是拒绝下载。
  • 我正在运行现在官方发布的ios8.0,安装不了。我看了看领事,有一条消息说:“:LoadExternalDownloadManifestOperation:忽略清单下载,已经有bundleID:MYBUNDLENAME” ...恢复设备或更改捆绑ID就可以了
  • @pcperini 我认为另一篇文章中的答案有更多信息。无意冒犯。

标签: ios xcode ios8 enterprise-distribution


【解决方案1】:

我在我们的应用分发中也遇到了这个问题。我们能够通过“伪造”用于下载分发的 .plist 中的包标识符来解决此问题,同时保持我们的 ipa 包标识符相同。

例如,在您的 plist 中:

<key>bundle-identifier</key>
<string>com.mycom.MyApp</string>
<key>bundle-version</key>
<string>0.2.2</string>

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

应用将使用新的应用图标安装,安装后该图标会消失。

如果您已经安装了该应用程序,您甚至会在安装过程中看到一个新的应用程序图标。安装后此图标消失,但您现有的应用程序版本将被更新。 全新安装后,安装图标将消失,而已安装的应用程序图标将出现在原处。

看起来 iOS 8 正在缓存捆绑标识符,并将请求的安装与这些缓存的安装进行比较。大多数情况下,您只会看到一个要求安装的弹出窗口,但没有任何反应。

正如 Sean 已经注意到的,这出现在 xCode 6 GM 和官方 iOS 8 版本中。以前从未安装过您的应用程序的设备安装应用程序不会有任何问题。

【讨论】:

  • 它可以在某些设备上运行,但在其他一些设备上,系统日志仍然显示以前的包 ID,即使我更改了 plist 文件。
  • 实际上提供图像是正确的解决方案-检查此答案stackoverflow.com/a/26283611/276656
  • 在我的情况下,更改捆绑标识符适用于某些设备 - 不是全部。在更改 plist 本身的路径后,它为我解决了。
  • 如果您从 Xcode Server 下载应用程序,要编辑的 .plist 在哪里?
  • 这个答案stackoverflow.com/a/28727958/108040 对我们来说效果更好,因为您不必更改 .plist
【解决方案2】:

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

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

这会重置设备缓存,现在您可以照常安装应用了。

【讨论】:

  • 谢谢,你是救生员。我使用Macroplant免费提供的iBrowse(ibrowseapp.com)
  • 这对我们很有用...不要忘记在删除媒体内容后重新启动设备 -> 下载
  • 感谢工作!但仍然认为是否需要在每个用户的手机上完成!
  • “删除所有内容和设置”(在“设置”应用下)是否有效?
  • 下载文件夹的内容是什么?
【解决方案3】:

我也有同样的问题。 我转载:

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

2) 在 iOS 8 中删除它

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

当我尝试更改服务器 plist 中的包标识符(不在应用程序 Info.plist 中)时,它起作用了(应用程序已下载,没有留下“阴影”图标)。但它看起来像一个苹果虫。

【讨论】:

  • 但是您还必须更改应用程序中的捆绑名称,不是吗?我只尝试更改服务器 plist,结果是:Sep 18 09:59:20 XXX-iPhone filecoordinationd[123] :沙盒拒绝订阅类别 com.mo2o.XXX 的进度(捆绑 id com.apple.iaptransportd , 037BE63A-8737-4A4B-9C9D-B8FAF8DC0D40) Sep 18 09:59:20 XXX-iPhone filecoordinationd[123] : 沙盒拒绝订阅 com.mo2o.XXX 类别的进度(捆绑 id (null), 0B9D3B2A- 2B5D-4882-8771-61784326E507) 并且应用无法安装
  • 嗯我错了,它会记录警告,但也会安装应用程序。
  • 这很好用,但是有一个小缺点。在安装过程中,设备不知道您正在更新哪个应用程序,因此您会在安装过程中看到第二个应用程序图标。安装后会自动更正。
  • 值得注意的是,在那篇buldozer.io 文章中,它说“似乎安装了开发人员证书的设备不受影响”。不清楚“开发者证书”是什么意思(我猜是“涵盖”相关应用的开发配置文件),但这可以解释在不同设备上重现该问题的问题。
【解决方案4】:

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

我的理解是,Apple 通过阻止临时二进制文件替换库存应用程序或从 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 版本
  • 通过更改两者中的捆绑 id 将 adhoc 分发为“新”应用程序 应用程序和分发列表
  • 使用TestFlight

【讨论】:

  • 看来你是对的。它适用于全新安装或更新应用程序的先前临时版本,但从 App Store 安装已安装版本时它不起作用。
  • 这是 Apple 做出改变的另一个提示:loopinsight.com/2015/10/05/…
  • 虽然我了解关闭安全性的必要性,但这使我们处于一个有趣的场景中,我们无法在不使用 TestFlight 的情况下在已部署的版本上测试从一个版本升级到另一个版本。似乎应该能够升级由同一开发人员的临时配置文件和证书签名的应用程序。
  • @charles,“它适用于全新安装或更新应用程序的先前版本”,你测试过吗?因为我们在 IOS9 中遇到了这个 adhoc update adhoc 问题.....
  • @flypig 我当时在 iOS 9 上试过,它确实有效。从那以后我没有尝试过,抱歉。
【解决方案5】:

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

    <key>bundle-version</key>
    <string>3.2.2</string>

这至少可以让您完成 OTA 安装。

(对不起...本来会添加到 cmets,但我太n00b了。)

【讨论】:

    【解决方案6】:

    查看this answerthis answer

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

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

    【讨论】:

    • 我实际上在包含这两个键时遇到了这个问题。
    • 是的,我更改了捆绑包标识符并且它起作用了。对此并不感到兴奋。
    • 太棒了!我也将所有内容移至子文件夹并仅调整 ipa 文件的 MD5。
    【解决方案7】:

    这是在 iOS8 Beta5 中首次发现的错误。而且在GM种子和iOS8.0官方版本中,苹果还没有修复。更多讨论请见here

    目前自己正在测试的解决方法:

    • 如果您不关心设备中的内容:在设备的 DFU 模式下进行干净还原
    • 如果你想拿回你的东西
      1. 在恢复之前在 iTunes 中备份您的 iOS 设备(无需 Ad-Hoc/企业应用程序)
      2. 干净地恢复您的设备后,安装您的 Ad-Hoc/企业应用程序
      3. 从 iTunes 恢复备份
      4. 现在您可以随意删除这些 Ad-Hoc/企业应用程序并重新安装它们。

    【讨论】:

    • 在 8.1 中也没有修复
    • 在 8.2 中仍然没有修复....... 可能只有我们 15 个人在世界上制作企业应用程序。
    【解决方案8】:

    通过更改 plist 中的包标识符解决了问题。

    通常,点击itms链接后,它会显示显示图标安装的桌面。但是,对于我的 iOS 8.0 设备,点击 itms 链接后,它不会切换到安装页面,但安装已经在后面了。

    【讨论】:

      【解决方案9】:

      这很极端,但如果您无法更改捆绑标识符,而我无法更改,则通过 iTunes 将您的 iPhone 恢复到最新的 iOS 8 并从备份恢复可以解决问题。

      【讨论】:

      【解决方案10】:

      iOS 10 beta 1 也存在同样的问题。

      Dec 31 19:01:32 iphone-6s itunesstored[98] : LoadExternalDownloadManifestOperation: 忽略清单下载,已经有 bundleID: com.***************.ios 与阶段: SSD下载阶段等待

      这里我不明白的一件事是 XCode 设备日志中的日期是 12 月 31 日,但是,设备配置了正确的日期和时间。

      更新: 来自 HockeyApp 的人在 WWDC 期间向 Apple 通报了这个问题,并且应该在下一个种子中进行修复。

      【讨论】:

      • iOS 10 上同样的问题
      【解决方案11】:

      如果您使用构建脚本构建您的 iOS 应用,并且您之前使用带有 --sign 标志的 PackageApplication,那么这可能会导致问题。在 10.10 上构建时,--sign 标志不再起作用并删除它会重新安装我们所有的 iOS 应用程序。

      见:https://devforums.apple.com/thread/251624?tstart=0

      【讨论】:

      • 这是解决一个不同的问题,与构建有关,而不是安装,正如 OP 所要求的那样。
      • 我不同意。 b5 中引入了一个行为更改,导致签名的 IPA 无法加载。假设 OP 在其清单文件中没有错误,那么实际上可以保证签名的 IPA 无法安装,并且完全符合他们提供的错误。因为他们没有提到他们是如何建立他们的 IPA 的,所以我不能确定它为什么会失败。另一方面,从我们的 IPA 中删除 sig 让它们全部重新安装。
      • 这可能是真的,但是如果您查看原始问题中指定的错误:“忽略清单下载,已经有bundleID:”,这显然与现在广泛讨论的iOS8企业错误有关应用程序以及无法安装在升级到 iOS8 之前安装的应用程序,然后在升级到 iOS8 后卸载。您可能正在解决一个问题,但这不是 OP 遇到的问题。
      【解决方案12】:

      确保您拥有完整的互联网访问权限。

      我在 OTA 安装和 IOS8 上遇到了同样的问题。因为我在公司代理后面,所以在我设置手动代理设置(在 IOS7 中不需要)来解决该问题之前,上述解决方案不起作用。

      【讨论】:

        【解决方案13】:

        我刚刚在运行 8.1 的设备上遇到此问题,将设备升级到 8.3 已解决此问题。因此,要么该错误不再存在于 8.3.... 中,要么无论如何升级都会清除缓存的数据。

        【讨论】:

          猜你喜欢
          • 2014-12-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-13
          • 2014-11-14
          • 2016-05-30
          • 1970-01-01
          相关资源
          最近更新 更多