我们通过一个企业账户,使用itms-services:// URL来分发应用。这一直都很正常,但在我们的iPad上安装了iOS 7.1测试版后,它就拒绝安装了。相反,我们只是得到一个通用的不能连接到example.com的消息,当下载应用程序出现任何问题时,iOS会毫无帮助地显示这个消息。

我无法在SO,谷歌或7.1发布说明中找到任何东西来建议可能导致问题的原因。


当前回答

除了使用Dropbox进行企业推广,你还可以使用TestFlight进行企业签名应用的推广。

https://www.testflightapp.com/

对于托管和分发临时开发版本和企业版本来说,这是一个非常棒的服务。

其他回答

我通过将iPad连接到计算机并在试图安装应用程序时通过XCode Organizer查看控制台发现了这个问题。错误原来是:

无法加载非https清单URL: http://example.com/manifest.plist

在iOS 7.1中,清单的URL。plist文件必须是HTTPS,而我们使用的是HTTP。将URL更改为HTTPS解决了这个问题。

I.e.

itms-services://?action=download-manifest&url=http://example.com/manifest.plist

就变成了

itms-services://?action=download-manifest&url=https://example.com/manifest.plist

我假设您必须拥有有关域的有效SSL证书。我们已经做过了,但我想没有它你会有问题。

如果你碰巧有AWS S3,它也很有魅力。好。相对而言:-)

在AWS中为您的ad hocs创建一个bucket,添加一个索引文件(它可以只是一个空白的index.html文件),然后使用一个可以连接到S3的客户端,如CyberDuck或Coda(我使用Coda -在那里您可以选择添加站点以获得连接窗口),然后设置连接如下所示:

然后在XCode中构建您的企业专用,并确保使用https://s3.amazonaws.com/your-bucket-name/your-ad-hoc-folder/your-app.ipa作为应用程序URL,并将其上传到新的S3桶目录。

您的itms链接应该匹配,即itms-services://?action=download-manifest&url=https://s3.amazonaws.com/your-bucket-name/your-ad-hoc-folder/your-app.plist

和s。

这只适用于通用的AWS url -我还没有在AWS上尝试过自定义url,所以你可能需要做一些不同的事情。

我决心尝试让詹姆斯·韦伯斯特的解决方案凌驾于工作之上,但我无法让它与普雷斯克一起工作。

进一步Mark Parnell的回答,一个快速而又不太规范的解决方法是将manifest plist放入Dropbox,然后使用Dropbox的web界面来获得直接的https链接(“分享链接”->“获取链接”->“下载”)。

真正的ipa可以保留在你经常饮用的地方。在将plist的URL插入itms- services URL的查询之前,您需要对其进行URL编码(尽管只需要将任何&s替换为%3D就可以了)。

一个缺点是安装对话框现在会显示“dl.dropbox.com想要安装[任何]”。

通用的解决方案是将你的设备连接到Mac上,然后观察安装过程中发生了什么。我得到一个错误:

Could not load download manifest with underlying error: Error Domain=NSURLErrorDomain Code=-1202 "Cannot connect to the Store" UserInfo=0x146635d0 {NSLocalizedDescription=Cannot connect to the Store, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, NSLocalizedFailureReason=A secure connection could not be established. Please check your Date & Time settings., NSErrorFailingURLStringKey=https://myserver.com/app/manifest.plist, NSUnderlyingError=0x14678880 "The certificate for this server is invalid. You might be connecting to a server that is pretending to be “myserver.com” which could put your confidential information at risk.", NSURLErrorFailingURLPeerTrustErrorKey=, NSErrorFailingURLKey=https://myserver.com/app/manifest.plist}

错误中甚至有检查日期设置的建议。不知什么原因,那天是1970年1月1日。设置正确的日期就解决了这个问题。

我也遇到了同样的问题,尽管我已经在使用SSL服务器,但简单地将链接更改为https是行不通的,因为有一个潜在的问题。

点击此处查看图片

突出显示的部分告诉我,我们应该提供信任证书的选项,但由于这是应用程序商店,因此在Safari中没有提供恢复建议。


我对现有的解决方案并不满意,因为:

有些选项需要依赖第三方(Dropbox) 我们不愿意为SSL证书付费 免费SSL证书只是一个临时解决方案。

我最终找到了一个解决方案,创建一个自签名根证书颁发机构,并使用它生成我们的服务器的SSL证书。

我使用了钥匙链访问和OSX服务器,但每个步骤都有其他有效的解决方案


创建证书颁发机构

据我所知,证书颁发机构被用来验证证书的真实性。由于我们将要自己创建一个证书,所以它并不完全安全,但这意味着您可以信任来自给定权威机构的所有证书。默认情况下,浏览器中通常包含这些授权机构的列表,因为这些授权机构实际上是受信任的。(GeoTrust Global CA, Verisign等)

打开Keychain并使用证书助手创建一个权威

填写您的证书颁发机构信息

我不知道是否有必要,但我让权威得到了信任。


生成证书签名请求

在本例中,证书签名请求由服务器管理员生成。简单地说,它是一个文件,询问“我可以为我的网站获得一个包含此信息的证书吗?”

接下来,你必须创建你的证书签名请求(我使用OSX服务器的证书管理器

填写您的证书信息(必须只包含ascii字符!谢谢@Jasper Blues)

将生成的CSR保存在某个地方


创建证书

再次作为证书颁发机构,由您来决定向您发送CSR的人是否真实,他们是否假装是其他人。真正的权威有他们自己的方法来做这件事,但因为你希望非常确定你是你,你的验证应该非常确定:)

返回“Keychain Access”,如图所示打开“Create A Certificate..”选项

将保存的CSR拖到指定的框中

点击“让我重写此请求的默认值”按钮

我想延长有效期。

由于某种原因,我们不得不重新填写一些信息

在此屏幕上单击continue

确保你点击SSL服务器认证,这让我有些头疼。

您可以单击继续查看其余选项。 邮件应用程序将打开,让您有机会发送证书。不要发电子邮件,右键单击并保存。


安装证书

现在我们需要设置服务器来使用我们刚刚为它的SSL通信创建的证书。

如果您使用的设备是服务器,则可能会发现证书已经安装。

如果没有,双击Pending证书,并将刚才从电子邮件中保存的PEM文件拖到指定的空间中。(或者,如果你没有保存PEM,你也可以从keychain中导出它。)

更新您的服务器以使用这个新证书。如果您发现新的证书不“粘”,并一直还原,请回到BOLD ITALIC CAPS中的位


安装设备

你需要安装应用程序的每个设备都需要有这个证书授权机构的副本,这样他们就知道他们可以信任来自该授权机构的SSL证书

返回到Keychain Access并将您的证书颁发机构导出为.cer

然后我把这个文件和我的OTA应用放在我的服务器上,用户可以点击这个链接下载权威证书。将证书直接通过电子邮件发送给用户也是一种有效的选择。

在您的设备上安装证书。


Test

确保你的plist链接是https 尝试安装一个应用程序!现在应该可以工作了。证书颁发机构是受信任的,SSL证书来自该颁发机构。