本文翻译自:Enterprise app deployment doesn't work on iOS 7.1
We distribute apps via an Enterprise account, using an itms-services://
URL. 我们通过企业帐户使用itms-services://
URL分发应用程序。 This has always worked fine, but after installing the iOS 7.1 beta on our iPad it refuses to install. 这一直很好,但是在我们的iPad上安装iOS 7.1 beta后,它拒绝安装。 Instead we just get the generic Cannot connect to example.com
message that iOS unhelpfully displays when there is any sort of problem downloading the app. 取而代之的是,当下载应用程序时出现任何问题时,iOS只会显示通用的Cannot connect to example.com
消息,iOS Cannot connect to example.com
无故显示该消息。
I've been unable to find anything here on SO, on Google or in the 7.1 release notes to suggest what could be causing the problem. 我一直无法在SO,Google或7.1版本说明中找到任何内容来建议可能导致此问题的原因。
参考:https://stackoom.com/question/1N4wt/企业应用程序部署在iOS-上不起作用
I found the issue by connecting the iPad to the computer and viewing the console through the XCode Organizer while trying to install the app. 我通过将iPad连接到计算机并在尝试安装应用程序时通过XCode Organizer查看控制台发现了问题。 The error turns out to be: 错误结果是:
Could not load non-https manifest URL: http://example.com/manifest.plist 无法加载非https清单URL: http : //example.com/manifest.plist
Turns out that in iOS 7.1, the URL for the manifest.plist
file has to be HTTPS, where we were using HTTP. 事实证明,在iOS 7.1中, manifest.plist
文件的URL必须为HTTPS,而我们使用的是HTTPS。 Changing the URL to HTTPS resolved the problem. 将URL更改为HTTPS可解决此问题。
Ie 即
itms-services://?action=download-manifest&url=http://example.com/manifest.plist
becomes 变成
itms-services://?action=download-manifest&url=https://example.com/manifest.plist
I would assume you have to have a valid SSL certificate for the domain in question. 我假设您必须为该域拥有有效的SSL证书。 We already did but I'd imagine you'll have issues without it. 我们已经做到了,但是我想如果没有它,您会遇到问题。
Further to the Mark Parnell's answer, a quick-and-dirty way of getting around this is to put the manifest plist into Dropbox, and then using the Dropbox web interface to get a direct https link to it ('Share link' -> 'Get link' -> 'Download'). 除了Mark Parnell的答案之外,解决此问题的一种快捷方法是将清单plist放入Dropbox,然后使用Dropbox Web界面直接获取指向它的https链接(“共享链接”->“获取链接”->“下载”)。
The actual ipa can remain wherever you always served it from. 实际的ipa可以保留在您始终提供服务的任何地方。 You'll need to URL-encode the plist's URL before inserting it into the itms-servivces URL's query (although just replacing any &s with %3D might work). 在将plist的URL插入itms-servivces URL的查询之前,您需要对plist的URL进行URL编码(尽管仅将%3D替换为&s即可)。
One downside is that the install dialog will now read "dl.dropbox.com wants to install [whatever]". 缺点之一是,安装对话框现在显示为“ dl.dropbox.com要安装[任何内容]”。
I can confirm it works, But You have to put html AND plist on dropbox. 我可以确认它是否有效,但是您必须将HTML AND plist放在Dropbox上。 It works also for non-enterprise OTA, ie You want to share app with your dev. 它也适用于非企业OTA,即您想与开发人员共享应用。 team. 球队。
I did: 我做了:
a) on my site I made a page with this link: a)在我的网站上,我创建了一个带有以下链接的页面:
.. href="https://dl.dropboxusercontent.com/u//(your DB id)/ipa.html">MyApp .. href =“ https://dl.dropboxusercontent.com/u//(您的数据库ID)/ipa.html”> MyApp
b) on DropBox I wrote another HTML page: b)在DropBox上,我编写了另一个HTML页面:
.. https://dl.dropboxusercontent.com/u/(your DB id)/MyApp.plist"> Tap to Install MyApp .. https://dl.dropboxusercontent.com/u/(您的数据库ID)/MyApp.plist“>点击以安装MyApp
c) moved plist on DropBox but leaving it to POINT to my old server (no https) c)在DropBox上移动了plist,但将其留到POINT到我的旧服务器上(没有https)
ingconti is right. ingconti是正确的。
www.dropbox.com
with dl.dropboxusercontent.com
in the link, like https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plist 在链接www.dropbox.com
dl.dropboxusercontent.com
替换为dl.dropboxusercontent.com
,例如https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plist download.html
file with a link formatted as INSTALL!!
创建具有格式为INSTALL!!
的链接的download.html
文件INSTALL!!
download.html
to dropbox 将您的download.html
上传到保管箱 www.dropbox.com
with dl.dropboxusercontent.com
in the second link as well, like https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html 更换www.dropbox.com
与dl.dropboxusercontent.com
在第二个链接,以及像https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html Now, visit https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html
in your device, you can install the app like before. 现在,在设备中访问https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html
,您可以像以前一样安装该应用程序。
WHAT A WONDERFUL WORLD! 多么美好的世界!
It is true, going forward you are expected to do all OTA deployments over https going forward with iOS7.1. 的确如此,今后您将在iOS7.1上通过https完成所有OTA部署。 Shame on Apple for not documenting this. 对Apple感到遗憾的是没有对此进行记录。
For those of you that are looking for a better in-house solution than relying on dropbox or having to fork out cash for a certificate you can have a solution if you follow the steps outlined in tip #5 here: http://blog.httpwatch.com/2013/12/12/five-tips-for-using-self-signed-ssl-certificates-with-ios/ 对于那些寻求更好的内部解决方案而不是依赖于保管箱或必须掏出现金来获得证书的人,如果您按照此处提示5中概述的步骤进行操作,则可以找到解决方案: http:// blog。 httpwatch.com/2013/12/12/five-tips-for-using-self-signed-ssl-certificates-with-ios/
The gist of it is this: 要点是:
This is not the same as just doing a self-signed certificate, in this solution you are also acting as your own private Certificate Authority. 这与仅执行自签名证书不同,在此解决方案中,您还充当自己的私有证书颁发机构。 If your root certificate that is installed on your Apple device is not marked as Trusted (green) then something is wrong. 如果您在Apple设备上安装的根证书未标记为“受信任”(绿色),则出问题了。 Do it over. 做完。
This absolutely works. 这绝对有效。
Update: 3/13/2014 - I have provided a small command line utility that simplifies this entire process. 更新:2014年3月13日-我提供了一个小型命令行实用程序,可简化整个过程。 You can get it at: https://github.com/deckarep/EasyCert/releases 您可以在以下位置获取它: https : //github.com/deckarep/EasyCert/releases