iOS企业部署:点击itms-services链接会导致“无法连接到[域名]”错误。

7
为了部署企业iOS应用,我创建了以下链接:
未编码版本(易于阅读):
<a href="itms-services://?action=download-manifest&url=https://example.com/api/distribution/ios?token=abc123">Download</a>

编码版本:

<a href="itms-services://?action=download-manifest&url=https%3A%2F%2Fexample.com%2Fapi%2Fdistribution%2Fios%3Ftoken%3Dabc123">Download</a>

正如这里这里所讨论的那样,链接已经正确编码。

假设用户的令牌有效,将通过SSL返回一个.plist文件,如这里所述。在.plist文件中引用的.ipa文件的URL是即时生成的。下面是.plist文件的样式:

<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>TEMP_URL</string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>org.cocos2d.ready-ios</string>
                <key>bundle-version</key>
                <string>0.0.1</string>
                <key>kind</key>
                <string>software</string>
                <key>title</key>
                <string>Ready</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

据我所知,我们的GoDaddy SSL证书似乎在受信任列表中。
然而,尽管上述情况都存在,但在点击链接并等待片刻后,我收到以下错误信息:
Cannot connect to [domain]

以下是点击链接后 iPhone 控制台输出的内容:
Aug 29 07:30:56 My-iPhone wifid[15] <Notice>: WiFi:[431015456.799163]: Client itunesstored set type to background application
Aug 29 07:30:56 My-iPhone wifid[15] <Notice>: WiFi:[431015456.804319]: BG Application: Not Present, BG Daemon: Present. Daemons: apsd networkd itunesstored 
Aug 29 07:30:56 My-iPhone wifid[15] <Notice>: WiFi:[431015456.806066]: Already connected to [Company Name].
Aug 29 07:30:58 My-iPhone itunesstored[100] <Warning>: Could not load download manifest with underlying error: Error Domain=SSErrorDomain Code=2 "Cannot connect to iTunes Store" UserInfo=0x15788270 {NSLocalizedDescription=Cannot connect to iTunes Store}
Aug 29 07:31:03 My-iPhone wifid[15] <Notice>: WiFi:[431015463.925398]: Client itunesstored set type to normal application
Aug 29 07:31:03 My-iPhone wifid[15] <Notice>: WiFi:[431015463.928745]: BG Application: Not Present, BG Daemon: Present. Daemons: apsd networkd 

有什么想法吗?

"有什么想法吗?" - 是 DNS 问题,防火墙问题,还是到企业服务器的路由问题呢? - jww
@jww:感谢您的评论。我不认为这是DNS问题,因为所有其他DNS查找都正常工作。我能够通过浏览器中的链接下载.plist文件和.ipa文件,所以我不认为这是路由问题。而且我没有运行任何防火墙。 - David Jones
在 iOS 企业应用中无法连接到 example.com,请确保服务器设置了正确的 MIME 类型。 - Harish Pathak
8个回答

8
我遇到了这个问题,这里或其他答案中的所有记录解决方案都没有奏效。使用正确的SSL证书,可以在目标设备上通过Safari加载plist而无任何问题。然而,尝试使用“itms-services://...”链接安装总是失败,并显示“无法连接到[域名]”错误。
问题是Web服务器未配置中间SSL证书。 Web浏览器对此没有问题,SSL有效,但将设备连接到Mac并通过XCode中的设备面板查看日志时,会显示以下错误:
iPhone itunesstored[83] <Warning>: Could not load download manifest with underlying error: Error Domain=NSURLErrorDomain Code=-1202 "Cannot connect to the Store".... "The certificate for this server is invalid. You might be connecting to a server that is pretending to be “[mydomain]”, which could put your confidential information at risk."

在Apache上安装中间SSL证书解决了这个问题。

一样!我不知道我有问题,但使用这个检查了我的服务器上的SSL证书设置,发现了问题所在;果然中间证书是问题所在。 - jrobe
我遇到了相同的错误。如果我为了在自己的机器上测试网页而自签名我的SSL证书,那么我该如何创建一个中间SSL证书呢?(我用来创建自己东西的网站:https://getgrav.org/blog/mac-os-x-apache-setup-ssl) - finneycanhelp
@finneycanhelp 中间证书用于建立到根证书颁发机构的信任链。如果您已签署自己的SSL证书,则不存在这样的事情。您可能需要将自签名SSL安装到iOS设备上。这个问题可能会有所帮助。 - MikeH

6
我曾经遇到了这样的问题,让我感到很烦恼。我一直收到弹出窗口“无法连接到[域名]”,并在日志中看到了同样的错误“无法连接到iTunes Store”。
最初的问题是我的.plist xml文件中缺失了“>”。
但是我在另一个ipad上修复了缺少的“>”,它也正常工作了。那么,应该在原始的ipad上也能正常工作了,对吧?事实并非如此,因为带有错别字的坏plist必须仍然存在于该ipad的缓存中。
因此,解决方法是要么重命名.plist文件,要么关闭并“重新启动”ipad,要么找到其他清除ipad糟糕的plist文件缓存的方法。

在哪一行缺少了这个 > 符号? - h.kishan
无论 ">” 缺失的位置在哪里,缺失了“>” 的影响是使 .plist 文件成为无效的 XML。一个例子是在 <key bundle-identifier</key> 这样的一行中缺少了“>”,在 <key 之后缺少了“>”。 - blalond
这似乎已经为我解决了问题。在我修复了.plist文件中的语法问题之后,我不得不重新启动我的iPad。我在<title>标签中插入了一个“&”符号。看起来是破坏了XML文件。也许应该使用&? - Chris Prince
我简直不敢相信那个缓存问题。重命名文件对我有用。我一直在重新启动设备,但仍然遇到同样的错误。难道真的没有办法清除坏的plist文件的缓存吗??? - Jan

3
我遇到了相同的错误。
在我的情况下,“.plist”无法访问。
我的解决方法是将适当的MIME类型添加到由Internet Information Services(IIS)托管的网站中。
即“.ipa”和“.plist”。 enter image description here

2

检查TEMP_URL的URL链接是否有任何尾随斜杠,并将其删除。如果您使用带有尾随斜杠的URL在浏览器中进行测试,它将会正常下载。但是在plist中会失败。


2
我简直不敢相信我这么愚蠢。它起作用了...当我复制和粘贴构建号码时,我把</string>中的<给删除了。谢谢! - Jann

2

我不确定这个翻译是否能够帮助原作者,因为我不知道itms-services是如何工作的,但它可能会帮助其他遇到“无法连接到[域名]”错误的人。

我们试图通过Safari安装企业部署时,一直看到这个错误。plist文件没有问题,如果我们直接输入URL地址,它所指向的ipa文件也可以下载。但是我们意识到我们通过http进行了第一次(预安装)连接。将其更改为https后,安装就可以正常进行了。


1
我们遇到了同样的问题,因为设备的内部日期设置在无效日期范围内。(1970年1月1日)
无效日期也会使SSL证书失效,7.1+设备需要有效的HTTPS连接才能安装企业应用程序。
我们通过将设备日期更改为当前日期来解决此问题。

1
如果您已经尝试了其他方法,但仍然收到“无法连接到[域名]”的错误提示,请确保您的 .plist 文件中指向图像的 URL 以“.jpg”或“.png”结尾。如果这是动态生成的图像,则可以创建一个特殊路由,以其中一个扩展名结尾。

1

对于我的情况,文件名中有.ipa的空格。

一旦去掉了这个空格,问题就解决了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接