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

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


当前回答

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

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

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

其他回答

一些好人通过使用Class 1 StartSSL证书和共享Apache配置来处理这个问题,该配置添加了证书支持(将与任何证书一起工作)和更改现有*中的链接的代码。Plist自动文件。太长了,不能复制,所以这里是链接: http://cases.azoft.com/how-to-fix-certificate-is-not-valid-error-on-ios-7/

我通过将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证书。我们已经做过了,但我想没有它你会有问题。

进一步解释之前关于Dropbox的问题,我实现了以下文件树,比如只有PLIST文件必须上传到Dropbox:

upload the ipa file to your server in http (no change here) upload the provisioning (.mobileprovision) file to your server in http (no change here) upload the plist file to your dropbox (no change to do inside the plist file as the URLs are in absolute) use the option "Share the link with Dropbox" which copies the link to your clipboard. This link has to be copied into your html file into the itms-servivces URL's query after changing the part www.dropbox.com by dl.dropboxusercontent.com. Note I URL encoded the link as suggested by @Mike but I don't test without to do it. Now the itms-services URL's query should look like this: itms-services://?action=download-manifest&url=https%3A%2F%2Fdl.dropboxusercontent.com%2Fs%2FYourShortDropboxLink.plist upload the html file to your server in http. Note the html file contains both links to ipa and provisioning files. access to your html file from your device and now the ipa can be installed by OTA like usually.

从现在开始,只有ipa文件必须更改,OTA提供下一个应用版本给你的测试人员。直到苹果改变安全规则。

我在这里加入我使用的非常简单的HTML文件:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>iPhone app for test</title>
</head>
<body>
<h1>iPhone app for test</h1>
<br/>
<ul>
    <li><a href="http://www.yourdomain.com/with/directories/provision/v.last/yourprovision_adhoc.mobileprovision">
            Install Provisioning File</a></li>
    <li><a href="itms-services://?action=download-manifest&url=https%3A%2F%2Fdl.dropboxusercontent.com%2Fs%2FYourShortDropboxLink.plist">
            Install Application</a></li>
</ul>
</body>
</html>

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

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

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

打开终端,执行如下命令: Curl -i https://(。Ipa文件路径不是plist)

这将告诉您安装程序是否可以看到IPA文件。如果您使用'-i'命令运行curl命令,您将看到完整的响应,它可能不是IPA文件。 这是安装程序看到的响应,因此如果它没有返回HTTP 200和IPA,则需要在您的端返回它。

ITMS安装程序不保存Safari中的任何上下文。如果您在Safari中的安全门户进行身份验证,则身份验证cookie不会传递给安装程序。即安装程序需要能够看到应用程序没有认证,这可能是你得到“无法连接到服务器”的原因。