热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

企业App更新在iOS8上的发布。-EnterpriseAppUpdateDistributiononiOS8

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

I have an enterprise app that I'm distributing via an itms URL:

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

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

On iOS 7, both downloads and updates work fine. On iOS 8, however, I get the error:

在ios7上,下载和更新都没问题。然而,在ios8上,我犯了一个错误:

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

In my plist, I have

在我的plist里,我有。

bundle-identifier
com.mycom.MyApp
bundle-version
0.2.2

and on my app on iOS 8, I'm running version 0.2.1

在ios8上的应用程序上,我运行的是0.2.1版本。

13 个解决方案

#1


90  

I've also encountered this problem with our app distribution. We were able to fix this issue by 'faking' the bundle identifier inside the .plist using for download distribution, keeping our ipa bundle identifier the same.

我也遇到过这个问题,我们的应用程序发行版。我们可以通过在.plist中“faking”绑定包标识符来解决这个问题,使用下载分发版,保持我们的ipa bundle标识符相同。

For example, in your plist:

例如,在您的plist:

bundle-identifier
com.mycom.MyApp
bundle-version
0.2.2

change com.mycom.MyApp to com.mycom.MyApp.ios8fix

改变com.mycom。MyApp,com.mycom.MyApp.ios8fix

The app will be installed using a new app icon, which will disappear after install.

该应用程序将使用一个新的应用程序图标来安装,该图标将在安装后消失。

If you already have an install of the app, you will even see a new app icon during install. After the installation this icon disappears, but your already existing version of the app will be updated. With a clean install the installation icon will disappear and the installed application icon will appear in place.

如果你已经安装了这个应用程序,你甚至会在安装过程中看到一个新的应用程序图标。安装之后,这个图标就会消失,但是你已经存在的应用程序版本将会被更新。安装一个干净的安装图标将会消失,安装的应用程序图标将会出现。

It looks like iOS 8 is caching the bundle identifiers and compares the requested installs with these cached ones. Most of the times you'll only see an popup asking for install, but nothing happens.

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

As Sean already noticed, this appears with xCode 6 GM and the official iOS 8 version. Devices which never installed your application before will have no problems to install the app.

正如Sean已经注意到的,xCode 6通用和官方的iOS 8版本也出现了。以前从未安装过应用程序的设备,安装应用程序时不会有问题。

#2


24  

This worked better for me, no need to touch your manifest or other trickery (perfect for Xcode Server where the plist is auto-generated):

这对我来说更好,不需要去碰你的清单或其他欺骗(对于Xcode服务器,plist是自动生成的):

  1. Download iExplorer (http://www.macroplant.com/iexplorer/)
  2. 下载iExplorer(http://www.macroplant.com/iexplorer/)
  3. Plug your device
  4. 把你的设备
  5. Delete all the files in "Media > Downloads"
  6. 删除“媒体>下载”中的所有文件
  7. Restart device
  8. 重启设备

This resets the device caches, now you can install your app as usual.

这重置了设备缓存,现在你可以像往常一样安装你的应用。

#3


16  

I am having the same problem. I reproduced it by:

我也有同样的问题。我复制了:

1) Having my application installed while upgrading from iOS 7 to iOS 8 GM

1)从ios7升级到ios8 GM时安装了我的应用程序。

2) Removing it in iOS 8

2)在ios8中删除它。

3) Trying to install it via itms-services: with the same bundle name

试图通过itms服务安装它:使用相同的包名。

When I tried to change the bundle-identifier in the server plist (not in the applications Info.plist), it worked (application was downloaded an no "shadow" icon remained). But it looks like an apple bug.

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

#4


11  

The accepted solution no longer works on iOS9.

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

My understanding is that Apple has closed a serious iOS security hole by preventing adhoc binaries from replacing stock apps or apps downloaded from the App Store. See this article for background (CVE-2015-3722/3725 and CVE-2015-3725):

我的理解是,苹果公司已经关闭了一个严重的iOS安全漏洞,阻止了临时的二进制文件取代从应用商店下载的股票应用程序或应用程序。查看本文的背景(CVE-2015-3722/3725和CVE-2015-3725):

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

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

Taken the security implications, I wouldn't expect this behaviour to change in future IOS versions. Alternative options seem to be:

考虑到安全问题,我不希望这种行为在未来的IOS版本中有所改变。备选方案似乎是:

  • delete the App Store version before installing the adhoc
  • 在安装adhoc之前,删除App Store版本。
  • distribute the adhoc as 'new' app by changing the bundle id in both the app and the distribution plist
  • 通过在应用程序和分发plist中更改包id,将adhoc作为“新”应用程序。
  • use TestFlight
  • 使用TestFlight

#5


9  

What Gil said seems to be correct, but more specifically, I found that I also needed to increment the bundle-version string in the server.plist:

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

    bundle-version
    3.2.2

This at least allows you to accomplish an OTA install.

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

(Sorry... Would've added to comments, but I'm too much a n00b.)

(对不起…会增加评论,但我太过了。

#6


9  

Take a look over this answer and this answer.

看一下这个答案和这个答案。

You can fix this issue without any hacks, for iOS8 you have to include in the assets key of the manifest .plist file the display-image and full-size-image keys. They were available in Xcode 5 when saving an archive for enterprise and add-hoc deployment, but were not required.

您可以在不使用任何技巧的情况下修复这个问题,因为iOS8必须包含manifest .plist文件、显示图像和全尺寸图像密钥的资产密钥。他们在Xcode 5中保存了一个用于企业和临时部署的归档文件,但不是必需的。

I have created a gist on github with the template for the install-manifet.plist file.

我已经在github上创建了一个关于install- et的模板。plist文件。

#7


3  

This a bug first found in iOS8 Beta5. And it was still not fixed by Apple in GM seed and official iOS8.0 version. More discussons could be found here

这是在iOS8 Beta5中发现的。而且它还没有被苹果公司在转基因种子和官方的iOS8.0版本中固定。更多的讨论可以在这里找到。

The current workaround being tested by myself:

目前的工作正在我自己测试:

  • If you don't care the contents in your device: do a clean restore in DFU mode of the device
  • 如果您不关心设备中的内容:在设备的DFU模式下进行干净的恢复。
  • If you want your things back
    1. Backup your iOS Device in iTunes before restore (without Ad-Hoc/enterprise app)
    2. 在恢复之前备份你的iOS设备(无需特别/企业应用)
    3. After restored your device cleanly, install your Ad-Hoc/enterprise app
    4. 在恢复您的设备干净后,安装您的特别/企业应用程序。
    5. Restore your backup from iTunes
    6. 从iTunes恢复备份。
    7. Now you are free to delete those Ad-Hoc/enterprise apps and reinstall them.
    8. 现在您可以随意删除这些临时/企业应用程序并重新安装它们。
  • 如果你想让你的东西在iTunes上备份你的iOS设备,然后恢复(没有特别的/企业应用),在恢复你的设备干净之后,安装你的特别/企业应用程序恢复你在iTunes的备份,现在你可以自由删除那些特别的/企业应用程序并重新安装它们。

#8


3  

Problem solved by changing the bundle identifier in plist.

通过更改plist中的bundle标识符来解决问题。

Normally, after tapping the itms link, it will shows the desktop which shows the icon installation. However, for my iOS 8.0 device, after tapping the itms link, it will not change to the installation page but installation is already working behind.

通常,在点击itms链接后,它将显示显示图标安装的桌面。但是,对于我的ios8.0设备,在点击itms链接后,它不会更改到安装页面,但是安装已经在后面工作了。

#9


2  

This is extreme but if you can't change your bundle identifier, which I couldn't, restoring your iPhone through iTunes to the latest iOS 8 and restoring from a backup fixes the problem.

这是极端的,但是如果你不能改变bundle的标识符,我不能,你可以通过iTunes将你的iPhone恢复到最新的ios8,然后从备份中恢复。

#10


1  

Same problem exists on iOS 10 beta 1.

iOS 10测试版也存在同样的问题。

Dec 31 19:01:32 iphone-6s itunesstored[98] : LoadExternalDownloadManifestOperation: Ignore manifest download, already have bundleID: com.***************.ios with phase: SSDownloadPhaseWaiting

iphone-6s itunesstore [98]: loadexternaldownloadmanifest操作:忽略manifest下载,已经有bundleID: com.*************** ************ios阶段:SSDownloadPhaseWaiting

One thing that I do not understand here is that the date is December 31st in the XCode device log, however, device has correct date and time configured.

我不明白的一点是,在XCode设备日志中,日期是12月31日,但是,设备有正确的日期和时间配置。

Update: Guys from HockeyApp notified Apple about this problem during WWDC and fix should come in the next seed.

更新:来自HockeyApp的人在WWDC上通知了苹果这个问题,修复应该在下一个种子中出现。

#11


0  

If you build your iOS apps with a build script and you were previously using PackageApplication with the --sign flag then that may be causing problems. The --sign flag doesn't work any longer when building on 10.10 and removing it got all of our iOS apps installing again.

如果您使用构建脚本构建您的iOS应用程序,并且您以前使用的是PackageApplication,那么可能会导致问题。在10.10的时候,标志标志不再起作用,并且移除所有的iOS应用程序。

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

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

#12


0  

Make sure you have a full internet access.

确保你有一个完整的互联网接入。

I was facing the same problem with OTA installation and IOS8. Because i'm behind a corporate proxy, the solutions above didn't work until I set manual proxy settings (not needed in IOS7) to solve that problem.

我在OTA安装和IOS8上遇到了同样的问题。因为我是一个企业代理,所以上面的解决方案直到我设置了手动代理设置(IOS7中不需要)才能解决这个问题。

#13


0  

I have just encountered this issue on a device running 8.1, upgrading the device to 8.3 has resolved the issue. So either the bug is no longer present in 8.3.... or the act of upgrading cleared the cached data anyway.

我刚刚在一个运行8.1的设备上遇到这个问题,将设备升级到8.3已经解决了这个问题。所以要么错误不再出现在8.3 ....或者更新缓存数据的行为。


推荐阅读
  • 本文详细介绍如何在 macOS 上编译 FFmpeg 3.1.1,并将其集成到 iOS 项目中,包括必要的环境配置和代码示例。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • 本文详细介绍了如何通过微信H5网页授权机制获取用户的code,并进一步获取用户的基本信息,包括必要的配置步骤和前端代码实现。 ... [详细]
  • 我在项目中发现设置了 GCC_NO_COMMON_BLOCKS = NO 的配置项,位于 Apple LLVM 编译器 3.1 的代码生成设置中。 ... [详细]
  • 作为一名在大型手机游戏公司工作的程序员,尽管主要负责游戏逻辑和内容的开发,但对iOS底层开发接触较少。现在有了iPhone和可以虚拟MAC环境的电脑,希望能找到有效的iOS开发学习路径。 ... [详细]
  • 本文档提供了在iOS开发中使用OClint进行静态代码分析的详细步骤,包括安装、更新和使用方法,以及相关资源链接。 ... [详细]
  • 深入理解 .NET 中的中间件
    中间件是插入到应用程序请求处理管道中的组件,用于处理传入的HTTP请求和响应。它在ASP.NET Core中扮演着至关重要的角色,能够灵活地扩展和自定义应用程序的行为。 ... [详细]
  • 本文介绍了如何在多线程环境中实现异步任务的事务控制,确保任务执行的一致性和可靠性。通过使用计数器和异常标记字段,系统能够准确判断所有异步线程的执行结果,并根据结果决定是否回滚或提交事务。 ... [详细]
  • JSOI2010 蔬菜庆典:树结构中的无限大权值问题
    本文探讨了 JSOI2010 的蔬菜庆典问题,主要关注如何处理非根非叶子节点的无限大权值情况。通过分析根节点及其子树的特性,提出了有效的解决方案,并详细解释了算法的实现过程。 ... [详细]
  • 本文详细探讨了 org.apache.hadoop.ha.HAServiceTarget 类中的 checkFencingConfigured 方法,包括其功能、应用场景及代码示例。通过实际代码片段,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • Spring Boot单元测试中Redis连接失败的解决方案
    本文探讨了在Spring Boot项目中进行单元测试时遇到Redis连接问题的原因及解决方法,详细分析了配置文件加载路径不当导致的问题,并提供了有效的解决方案。 ... [详细]
  • 本文介绍如何使用 Angular 6 的 HttpClient 模块来获取 HTTP 响应头,包括代码示例和常见问题的解决方案。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
author-avatar
王老虎在江湖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有