itms-services://
URL 分发应用。这一直很正常,但在我们的 iPad 上安装了 iOS 7.1 beta 后,它拒绝安装。相反,我们只得到 iOS 在任何下载问题时无用地显示的通用信息Cannot connect to example.com
。我无法在这里、Google 或 7.1 发布说明中找到任何东西来表明可能会引起问题的原因。
itms-services://
URL 分发应用。这一直很正常,但在我们的 iPad 上安装了 iOS 7.1 beta 后,它拒绝安装。相反,我们只得到 iOS 在任何下载问题时无用地显示的通用信息Cannot connect to example.com
。结果发现,在iOS 7.1中,无法加载非 HTTPS 的清单 URL:http://example.com/manifest.plist
manifest.plist
文件的URL必须使用HTTPS,而我们使用的是HTTP。将URL更改为HTTPS即可解决问题。itms-services://?action=download-manifest&url=http://example.com/manifest.plist
变成
itms-services://?action=download-manifest&url=https://example.com/manifest.plist
我认为你需要拥有一个与此域名相关的有效SSL证书。我们已经拥有了,但如果没有它,我想你可能会遇到问题。
ingconti是正确的。
dl.dropboxusercontent.com
替换www.dropbox.com
,例如https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plistdownload.html
的文件,并使用以下格式的链接:<a href="itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plist">INSTALL!!</a>
download.html
上传到Dropboxdl.dropboxusercontent.com
替换www.dropbox.com
,例如https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html现在,在您的设备上访问https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html
,您可以像以前一样安装应用程序。
多么美妙的世界!
除了Mark Parnell的回答,一个快速且不太正式的解决方法是将清单plist放入Dropbox中,然后使用Dropbox Web界面获取直接https链接(“分享链接”->“获取链接”->“下载”)。
实际的ipa文件可以保留在您一直提供服务的地方。在将其插入到itms-servivces URL的查询中之前,您需要对plist的URL进行URL编码(尽管只是将任何&s替换为%3D可能会起作用)。
缺点之一是安装对话框现在将显示“dl.dropbox.com想要安装[whatever]”。
确实,从iOS7.1开始,您需要通过https进行所有OTA部署。苹果没有记录这一点,真可耻。
如果您正在寻找比依赖dropbox或花费现金购买证书更好的内部解决方案,那么只需按照此处提示#5中概述的步骤即可获得解决方案:http://blog.httpwatch.com/2013/12/12/five-tips-for-using-self-signed-ssl-certificates-with-ios/
其要点如下:
这不同于仅执行自签名证书,在此解决方案中,您还充当自己的私人证书颁发机构。如果您在Apple设备上安装的根证书没有标记为受信任(绿色),则出现问题。重新执行。
这绝对奏效。
更新:3/13/2014 - 我提供了一个小型命令行实用程序,可简化整个过程。您可以在此处获取它:https://github.com/deckarep/EasyCert/releases
最终,我通过创建一个自签名根证书授权并使用它生成我们服务器的SSL证书找到了一个解决方案。
我使用了Keychain Access和OSX Server,但每个步骤都有其他有效的解决方案。
据我了解,证书颁发机构用于验证证书的真实性。由于我们即将自己创建一个,它并不是非常安全,但这意味着您可以信任来自特定机构的所有证书。这些机构的列表通常默认包含在您的浏览器中,因为它们是实际受信任的。(如GeoTrust Global CA、Verisign等)
在我们的情况下,证书签名请求是由服务器管理员生成的。简单来说,它是一个文件,询问“我能否使用这些信息为我的站点获取证书”。
作为证书颁发机构,您需要判断发送CSR的人是否真实可靠,而不是冒充别人。真正的机构有自己的验证方式,但由于您很有把握是您自己,所以您的验证应该是相当确定的 :)
您可以点击继续浏览其他选项。
邮件应用程序将打开,让您有机会发送证书。而不是通过电子邮件发送,请右键单击并保存它。
现在我们需要设置服务器使用刚刚创建的证书来处理SSL流量。
您需要在每个需要安装应用程序的设备上安装此证书颁发机构的副本,以便它们知道可以信任该颁发机构颁发的SSL证书。
确保您的plist链接是https
打开终端并运行以下命令:curl -i https:// (.ipa文件路径不是plist)
这将告诉你安装程序是否可以看到IPA文件。如果您使用'-i'运行curl命令,则会看到完整的响应,它可能不是IPA文件。 这是安装程序看到的响应,因此如果它没有返回HTTP 200和IPA,则需要在您的端返回。
ITMS安装程序不保存来自Safari的任何上下文。如果您在Safari中通过身份验证进入安全门户,则认证cookie不会传递给安装程序。即安装程序需要能够在没有身份验证的情况下查看应用程序,这可能是您遇到“无法连接服务器”的原因。
我也遇到了同样的问题,按照上面的方法进行操作:
这两个页面都成功地安装了ios 7.1系统上的应用程序。
但是,现在ios 7.0x系统的iPhone无法安装该应用程序。
我创建了一个新问题:upgraded adhoc app deployment doesnt work on ios previous to 7.1
这两个问题密切相关,也受到官方参考文献的缺乏的影响。
有一位好心人使用了Class 1 StartSSL证书并分享了添加证书支持的Apache配置(适用于任何证书)以及自动更改现有*.plist文件中链接的代码来解决这个问题。内容太长,无法复制,所以这里是链接:http://cases.azoft.com/how-to-fix-certificate-is-not-valid-error-on-ios-7/