Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 8上的企业应用程序更新分发_Ios_Xcode_Ios8_Enterprise Distribution - Fatal编程技术网

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

iOS 8上的企业应用程序更新分发,ios,xcode,ios8,enterprise-distribution,Ios,Xcode,Ios8,Enterprise Distribution,我有一个通过itmsURL分发的企业应用程序: itms-services://?action=download-manifest&url=itms-services://?action=download-manifest&url=https://$MY_PLIST_URL.plist 在iOS 7上,下载和更新都可以正常工作。但是,在iOS 8上,我得到一个错误: LoadExternalDownloadManifestOperation: Ignore manifest d

我有一个通过
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
在我的生活中,我有

<key>bundle-identifier</key>
<string>com.mycom.MyApp</string>
<key>bundle-version</key>
<string>0.2.2</string>
bundle标识符
com.mycom.MyApp
捆绑版本
0.2.2

在iOS 8上的应用程序上,我运行的是0.2.1版,我也遇到了同样的问题。 我复制了它:

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

2) 在iOS 8中删除它

3) 尝试通过itms服务安装:使用相同的捆绑包名称


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

这是在iOS8 Beta5中首次发现的bug。苹果在转基因种子和官方iOS8.0版本中仍然没有修复。可以找到更多的讨论

我自己正在测试的当前解决方案:

  • 如果您不关心设备中的内容:在设备的DFU模式下执行干净还原
  • 如果你想要回你的东西
  • 还原前在iTunes中备份iOS设备(不带临时/企业应用程序)
  • 干净地还原设备后,安装临时/企业应用程序
  • 从iTunes恢复备份
  • 现在,您可以自由删除这些临时/企业应用程序并重新安装它们

我在我们的应用程序分发中也遇到了这个问题。我们可以通过在.plist中“伪造”包标识符来修复此问题,该标识符用于下载分发,保持我们的ipa包标识符不变

例如,在plist中:

<key>bundle-identifier</key>
<string>com.mycom.MyApp</string>
<key>bundle-version</key>
<string>0.2.2</string>
bundle标识符
com.mycom.MyApp
捆绑版本
0.2.2
将com.mycom.MyApp更改为com.mycom.MyApp.ios8fix

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

如果你已经安装了应用程序,你甚至会在安装过程中看到一个新的应用程序图标。安装后,此图标消失,但应用程序的现有版本将更新。 清洁安装后,安装图标将消失,安装的应用程序图标将出现在适当的位置

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


正如肖恩已经注意到的,xCode 6 GM和官方iOS 8版本都会出现这种情况。以前从未安装过应用程序的设备在安装应用程序时不会出现问题。

Gil所说的似乎是正确的,但更具体地说,我发现我还需要在服务器中增加捆绑包版本字符串。plist:

    <key>bundle-version</key>
    <string>3.2.2</string>
bundle版本
3.2.2
这至少允许您完成OTA安装

(很抱歉……本可以添加到评论中,但我太喜欢n00b。)

请仔细查看

对于iOS8,您可以在不使用任何黑客攻击的情况下修复此问题,您必须在清单
.plist
文件的
显示图像
全尺寸图像
键中包含
资产
键。在为企业保存存档和添加临时部署时,它们在Xcode 5中可用,但不是必需的


我已经用文件模板在github上创建了一个要点。

这是极端的,但是如果你不能更改捆绑包标识符,我就不能,通过iTunes将iPhone恢复到最新的iOS 8并从备份中恢复可以解决问题。

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


请参阅:

通过更改plist中的捆绑包标识符解决的问题


通常,点击itms链接后,它将显示桌面,其中显示图标安装。但是,对于我的iOS 8.0设备,在点击itms链接后,它将不会更改为安装页面,但安装已经完成。

请确保您可以完全访问internet


我在OTA安装和IOS8上也面临同样的问题。因为我支持一个公司代理,所以在我设置手动代理设置(IOS7中不需要)以解决该问题之前,上述解决方案都不起作用

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

  • 下载iExplorer()
  • 插入设备
  • 删除“媒体>下载”中的所有文件
  • 重启设备

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

    我刚刚在运行8.1的设备上遇到此问题,将设备升级到8.3解决了此问题。因此,要么8.3中不再存在该缺陷。。。。或者升级操作仍然会清除缓存的数据。

    接受的解决方案在iOS9上不再有效

    据我所知,苹果已经通过防止临时二进制文件取代股票应用程序或从应用商店下载的应用程序,填补了严重的iOS安全漏洞。背景见本文(CVE-2015-3722/3725和CVE-2015-3725):

    考虑到安全问题,我不希望这种行为在未来的IOS版本中发生变化。其他选择似乎是:

    • 在安装adhoc之前删除应用商店版本
    • 通过更改两个应用程序中的捆绑包id,将临时应用程序作为“新”应用程序分发 应用程序和分发列表
    • 使用试飞

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

        12月31日19:01:32 iphone-6s itunesstored[98]:LoadExternalDownloadManifestOperation:忽略清单下载,已具有bundleID:com.******************.i