我们公司有一个应用程序,可以使用Enterprise Distribution通过网站下载。
在iOS 8 Beta 5中,点击下载链接会显示预期的弹出窗口(网站)想要安装(应用程序名称)"。点击安装'在该对话框上首先导致应用程序卡住"等待......"
直到它最终显示:"目前无法下载无法下载应用程序(应用程序名称)。"
使用iOS 7按预期正常安装。
在iOS 8下从Xcode运行应用程序。
我们如何支持iOS 8企业分发?
也许需要对Manifest文件进行更改?当我尝试在Xcode 6 Beta 7中构建应用程序时,Enterprise Archival进程没有提示我制作清单文件......
答案 0 :(得分:62)
通过试图安装我的某个应用程序的手机控制台,我发现:
Sep 9 12:16:56 iPhone misagent[94] <Error>: attempt to install invalid profile: 0xe8008011
Sep 9 12:16:56 iPhone installd[40] <Error>: 0x100484000 -[MIInstallableBundle _installEmbeddedProfileInBundle:]: Could not install embedded profile: 0xe8008011 (Expired)
我不知道的原因,苹果使我的一半个人资料无效并且没有提醒我。进入developer.apple.com后找到任何无效的配置文件:
点击Edit
- &gt; Generate
- &gt; Download
使用新配置文件重建应用程序。
但是 - 至少有一个我的应用程序的坏消息是无法安装。透过控制台看我没什么。我确信这是一个苹果虫,所以提出了雷达:17622725
我希望您的问题是个人资料问题,否则我们可能需要等到今晚1800GMT才能看到苹果是否已修好它。
修改
使用iOS8 GM - 我得到Waiting...
- 我会随时向您通报错误报告的进展情况。
修改强>
在排除故障后找到了一些修复程序:
修复1
从iOS8开始,如果您在清单plist中链接的图像不存在 - Apple将不会在手机上安装该应用程序 - 清单是您在下载页面上链接到的文件:{{1} }
确保itms-services://?action=download-manifest&url={url}
和full-size-image
都存在:
display-image
修复2
如果由于iOS8的错误,以前在iOS7上存在企业应用程序将无法安装。控制台中出现错误:
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>https://{path_to_real_image}</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>https://{path_to_real_image}</string>
</dict>
这可以通过临时更改清单文件中的Ignore manifest download, already have bundleID: {bundle_id}
来解决,但是Apple知道它们将错误报告标记为重复。在进行内部测试后,您还可以通过停留主屏幕布局bundleID
修复3
如果您看到应用程序进入General -> Reset -> Reset Home Screen Layout
阶段而不是installing...
几乎肯定问题是loading...
已过期,要修复下载,您需要重新归档您使用新的,更新的配置文件进行申请。
修复4
如果您看到应用程序进入embedded provisioning profile
阶段且installing...
有效 - 请在连接到控制台时下载应用程序。 (Xcode 6&gt; Window&gt; Devices&gt; Bottom Left Button [v]),您可能会发现安装失败并且provisioning profile
稍微下面将是错误消息。在我的情况下Verification Stage Failed
- 对于此错误,请转到developer.apple.com并更新您的应用程序标识符以包含正确的服务。对我来说,(Entitlements found that are not permitted by provisioning profile)
需要启用。然后重新生成App Groups
答案 1 :(得分:7)
我今天遇到了同样的问题:我无法在IOs8上安装我的企业应用程序(但在IOs7上)。 经过几个小时的搜索,我终于在设备控制台上阅读了这条消息:
<Warning>: LoadExternalDownloadManifestOperation: Ignore manifest download, already have bundleID: com.ecaste.Crew-Desk
经过长时间的搜索,我终于阅读了这篇文章: http://support.hockeyapp.net/discussions/problems/26683-not-able-to-download-apps-ios8-beta-5-autoupdate-manually-etc
到最后我只更改了plist的名称和下载ipa的链接(可能是第二个不需要),最后安装了应用程序。
最后,似乎IOs8中的一个Cache问题认为已经安装了应用程序(事实并非如此,我之前已将其卸载)。
希望这个帮助
答案 2 :(得分:7)
同样的错误,我尝试更改bundle-id,bundle-version,plist ......但错误仍然存在。
我知道这有点棘手,但这是唯一对我有用的东西:
在iTunes中创建备份
安装iExplorer:http://www.macroplant.com/iexplorer/
启动iExplorer,然后选择演示模式
在左侧边栏中,选择“媒体”,然后打开“下载”文件夹, 并删除其中的所有文件
重启设备
打开下载页面并安装最新版本的应用
实际上,我省略了前两个步骤并且它完美无缺:)
我希望这会有所帮助
答案 3 :(得分:6)
将部署目标设置为
项目&gt;构建设置&gt; iOS部署目标
目标&gt;构建设置&gt; iOS部署目标
答案 4 :(得分:3)
我刚才遇到了这个问题,它是由mainfest plist(keys:full-size-image + display-image)指向不存在的url图像位置引起的。
看起来iOS6 / iOS7能够处理如果图像不存在但iOS8对此更具限制性。
答案 5 :(得分:3)
根据之前关于&#34;忽略清单下载的评论&#34;消息,我们尝试更改.plist中的包ID(即com.companyName.AppName)以获得唯一名称,以强制iOS 8无论如何下载/安装它。安装后,它会正确替换现有副本。
我相信这里有两个问题。如果https网站上指向企业证书签名.ipa文件的.plist具有与已安装的应用程序匹配的捆绑标识符,则不会覆盖它。 bundle-version在我们所有的.plist文件中都是不同的,因此它应该安装它。 iOS 7似乎没有这个问题。我们计划通过弄乱plist中的bundle-identifier来解决这个问题,因此它始终是构建中唯一的。
第二个问题是,当它成功安装应用程序时,它不会切换到主屏幕或指示它正在做任何事情。在iOS 7中,选择&#34;安装&#34;在提示符处按钮,将切换到图标为暗的主屏幕,进度指示器将显示下载进度。然后应用程序旁边会有一个蓝点表示它是新的。使用iOS 8,它不会切换到主屏幕,因此它似乎无法正常工作。您可以手动转到主屏幕,您应该看到带有进度指示器的暗图标(现在位于新位置,因为它不知道它将替换现有应用程序)。成功下载/安装后,它不会在替换的应用程序上放置蓝点。
希望这有帮助。
答案 6 :(得分:2)
这给我带来了巨大的痛苦。我需要在MDM解决方案之外的员工电话上安装新的应用程序OTA。我似乎尝试了在互联网上找到的所有可能的解决方案,但没有任何效果。我能得到的最接近的是应用程序进入“加载”阶段。我的解决方案需要一周的工作,尝试不同的事情。我不确定哪种方式有效,哪种方式有效,但这就是我所做的:
在我的情况下,我之前使用开发人员(而不是企业)帐户的配置文件构建了此应用程序。在Xcode中,我更改了Bundle Identifier以给它一个新名称,例如,它最初是com.mydomain.myapp并且变成了com.mydomain.mysuperapp。
应用程序中的确保代码签名有效,并包含企业帐户的分发证书
我使用了错误的配置文件(一个没有相关的身份)因此,因为我选择了'自动'它构建得很好但是永远不会安装。因此,我将Release的代码签名更改为我的分发配置文件(而不是开发配置文件)
确保应用程序的部署目标设置得足够低,以便下载它的设备
归档文件&amp;导出用于企业部署
清单必须包含57x57 png和512x512 png图像,否则安装不会超过“等待”阶段
我创建了一个如下所示的index.html文件:
<html>
<body>
<a href="itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/dw80wahlwupkyd5/MyApp.plist">
Install Learning Chunks App from Dropbox</a>
</body>
</html>
我使用过我在网上找到的plist样本,它包含了一些可选设置。当我离开这些时,下载不起作用。我拿出来了。我的清单plist文件名为:MyApp.plist,看起来像这样:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>https://dl.dropboxusercontent.com/s/r1bljbkcows7sje/mysuperapp.ipa</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string> https://dl.dropboxusercontent.com/s/ujk9ipcv2naltut/logo57.png</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>https://dl.dropboxusercontent.com/s/gpebomok83mp9d5/logo512.png</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.mydomain.mysuperapp</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>My Super App</string>
<key>subtitle</key>
<string>My Super App</string>
</dict>
</dict>
</array>
</dict>
</plist>
我将MyApp.plist,index.html,logo57.png,logo512.png和MyApp.ipa上传到DropBox。我与那些需要下载应用程序的人分享了index.html。
然后,用户可以单击电子邮件中的共享链接,应该安装应用程序。
答案 7 :(得分:1)
编辑:下面的问题是一个红鲱鱼。正如上面提到的Dylan Hand,我的问题是我在清单文件中破坏了图像链接。显然这对于ios7并不重要,但如果确实如此,ios8将无法完成安装。当我删除这些引用时,它工作得很好。
我有与OP相同的症状(即#34;无法下载应用程序&#34;消息,但仅限于iOS 8)。当我尝试验证(即管理器 - &gt;验证)时,我收到以下消息。
这导致我发表这篇文章:https://stackoverflow.com/a/25757196/751136
它声称重新生成您的配置文件应该会产生一个名为beta-reports-active
的新权利。当我尝试在我的企业帐户中执行此操作时,新配置文件没有新的权利。但是,当我在另一个非企业帐户中重新生成配置文件时,新配置文件DO具有该字段。
答案 8 :(得分:1)
如果您使用构建脚本构建iOS应用程序,并且之前使用的是带有--sign标志的PackageApplication,则可能会导致问题。在10.10上构建时, - sign标志不再起作用,删除它会让我们的所有iOS应用再次安装。
答案 9 :(得分:1)
这个问题让我抓狂 只有这对企业分销有帮助: 执行所有必需的构建设置,然后单击“存档”。执行企业分发流程。您将看到管理器窗口。在Mac机器上,通过选择KRelease并选择“Show in finder”找到.xcacrchive文件。
用户导航到.xcarchive文件所在的文件夹。右键单击.xcarchive文件,然后选择“显示包内容”选项。
在打开的查找程序窗口中,转到产品/应用程序 选择并复制.app文件
在磁盘上的某处创建一个名为“Payload”的新文件夹注意:文件夹名称区分大小写。 将复制的.app文件粘贴到“Payload”文件夹中。 压缩Payload文件夹以获取Payload.zip文件 将Payload.zip文件重命名为.ipa并将其与.plist捆绑在一起 完成!!! .ipa文件已准备好安装在.xcarchive生成中使用的配置文件中注册的设备上。
答案 10 :(得分:0)
我已经解决了这个问题。
你可以像这样辞职
codesign -fs "iPhone Distribution: Your Company Name" --entitlements=/Users/SenTR/Downloads/codesign/Entitlements.plist /Users/SenTR/Downloads/codesign/Payload/Your_Project_name.app
Entitlements.plist示例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>application-identifier</key>
<string>PREFIX.yourappBundleID</string>
<key>aps-environment</key>
<string>production</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>PREFIX.yourappBundleID</string>
</array>
</dict>
</plist>
如果你懂中文,这将有所帮助。
答案 11 :(得分:0)
这些答案是值得检查的有效内容,但是如果其他人像我一样尝试过这些答案并且STILL遇到问题,make sure your app contains the proper plist setting that allows the exported archive to be compressed correctly。 这个即使按照上述所有步骤操作也是如此。另外值得注意的是,关于确保网站的plist包含有效图像链接的答案似乎不会影响任何事情,至少对于我们使用XCode 6.3来导出档案。无论这些链接是否正确,它都有效/无效。尽管如此,让这些信息正确显然是一个好主意。另一个有趣的说明是,如果我们使用XCode 5导出,则ipa总是以正确的格式出现(参见上面链接的SO文章);看来XCode 6+现在对它很挑剔。
答案 12 :(得分:0)
我的问题已经通过删除所有内置的outut,然后完全重建来纠正。
答案 13 :(得分:0)
此安装问题的另一个可能来源是项目与配置文件之间的情况不匹配(特别是在自动或其他命令行构建中)。捆绑包ID区分大小写。例如,如果配置文件中的应用程序包标识符为com.example.MyApp
且项目配置和/或Info.plist使用com.Example.Myapp
,则Xcode 7.1将因代码签名错误或回退到通用配置而失败配置文件(一个带有* bundle id,这可能本身就是一个问题),但xcodebuild
命令将成功。例如,Jenkins还会将错误签名的构建上传到Hockeyapp。构建将下载到客户端设备,但由于案例不匹配而无法安装。
因此,
检查应用程序包标识符在项目和Apple Developer门户中的设置方式是否相同。
避免此特定问题的最简单方法是始终在捆绑标识符中使用小写字符。从Apple Developer门户复制捆绑包ID并将其粘贴到项目构建设置(PRODUCT_BUNDLE_IDENTIFIER
)当然也有帮助。
虽然我遇到了企业帐户的问题,但事实上它可能并不特定于此类分发。
请务必查看Apple的技术说明Installation Failure Troubleshooting for iOS。
答案 14 :(得分:0)
我的问题是我的ipa文件名和我的plist中对ipa的引用都有空格。删除两者中的空间允许安装