我已按照Apple和其他博客posts的所有说明进行操作。我已经存档了应用程序,制作了.plist和.ipa文件,将它们放在服务器上并链接到它们。我可以很好地安装配置文件。但是当我点击链接安装应用程序时(在iphone上的safari中),没有任何反应。没有错误消息。没有。这就是链接的样子:
<a href="itms-services://?action=download-manifest&url=http://mydomain.com/test/myApp.plist">Install the app</a>
知道为什么这不起作用?似乎itms-services协议已经死了。 MIME类型很好(我可以指向地址栏中的plist文件,它显示为文本)。
答案 0 :(得分:16)
当我在清单文件和应用程序归档文件的文件名中有空格时,我有类似的症状。我删除了所有空格,无线安装为我工作。看起来你的清单没有空格,所以也许你的app文件可以吗?
答案 1 :(得分:15)
答案实际上非常简单:URL需要“双重转义”,即
itms-services://?action=download-manifest&url=https://example.com/My%2520App.plist
这是因为在将其视为另一个URL之前,该值将未转义转移到https://example.com/My%20App.plist
。这将由example.com
处的服务器转义为空格。
解析器不特别处理:...&url=https://.../test/a+b
导致Apache日志中出现"GET /test/a+b HTTP/1.1"
。 (假设所有查询字符串都是application/x-www-form-urlencoded
是不明智的;这只是在HTML中标准化。)
顺便说一句,看起来itms-services使用+[NSURL URLWithString:]
验证网址:url=.../My%20App.plist
没有请求,因为[NSURL URLWithString:@"https://.../My App.plist"]
返回nil
。然而,NSURL中存在一个长期存在的错误:它将在末尾转义一个无效(BMP)字符而不是返回nil。我的测试用例
url=.../test/%3c
会生成日志"GET /test/< HTTP/1.1"
(这绝对是无效的HTTP!)url=.../test/%0a
导致设备出错但没有日志消息(因为Apache将其视为格式错误的请求)url=.../test/%0d
会生成日志"GET /test/\r HTTP/1.1"
答案 2 :(得分:4)
itms-services是一个标识符,apple / iphone将通过该标识符识别它应该验证证书并且应该安装。
要在安装ipa文件之前验证配置文件,它将连接到“ax.init.itunes.apple.com”和“ocsp.apple.com”。
如果您使用任何内部网连接,请检查这些链接是否可访问?如果没有,您无法通过无线方式安装应用程序。
&安培;设备上的最小操作系统应为4.0
答案 3 :(得分:3)
我正在使用IIS 6.0并且index.html页面正在加载但是当用户点击苹果设备(即)iphone 4的.plist链接时,我不断收到“无法连接www.mywebsite.com”。除了添加MIME类型之外的解决方案是共享.plist文件所在的Web共享,最重要的是:更改清单.plist文件的安全访问权限。完全控制默认的Windows用户
答案 4 :(得分:2)
使服务器的MIME设置正确。
google for it你会找到正确的方法
答案 5 :(得分:2)
看起来你有几个指针可能会出现问题,下次是:从Xcode Organizer检查设备控制台,它通常包含有关失败的OTA分发的有用信息。
答案 6 :(得分:1)
确保所有网址都完全合格。包括png文件的那些。
答案 7 :(得分:1)
我遇到了和上面相同的问题。在完成上述所有操作并失败之后,我发现当我存档我的应用程序时,我没有在设置中放入应用程序URL,因此这个URL从未在我的plist文件中。确保在查看plist文件时应用程序URL所在的位置。
答案 8 :(得分:1)
对于有兴趣动态生成plist的人,这个例子是PHP:
$appUrl='itms-services://?action=download-manifest&url=http://server/iOSpList.php?'.
'url%3D'.$app['url'].
'%26bundle%3D'.$app['bundle'].
'%26version%3D'.$app['version'].
'%26name%3D'.$app['name'];
另外,请确保将mime类型返回为application/xml
。
答案 9 :(得分:1)
与之前的许多其他人一样,我也遇到过这个问题的守护进程。在我的情况下,问题是plist文件没有正确格式化。请确保该文件遵循文档中列出的确切模式:http://developer.apple.com/library/ios/#featuredarticles/FA_Wireless_Enterprise_App_Distribution/Introduction/Introduction.html
答案 10 :(得分:0)
使用AdHoc配置文件分发我的应用时出现类似问题。我尝试删除旧的配置文件,生成新的配置文件,重新启动Xcode,清理和重建,检查URL路径名称等。该应用程序将安装在某些设备上但不安装在其他设备上。
对我来说有用的是更改应用版本并构建更新的数字。
答案 11 :(得分:0)
如果您是通过电子邮件发送链接,则无法在电子邮件中使用HTML格式。您必须使用“富文本”格式
不知道为什么,但那是怎么回事(至少用Outlook)
答案 12 :(得分:0)
正确的解决方法是用“+”(加号)替换空格为... url = ...表示它是查询字符串参数,它们在编码时应编码为表单数据参数对于URL。
从这里W3.org - Forms in HTML documents:
“控制名称和值被转义。空格字符被'+'替换,然后保留字符被转义,如[RFC1738]中所述”
P.S。这解决了我们在icenium.com开发过程中遇到的同样问题。 您可以检查在那里签名的AdHoc配置,并查看它如何适用于名称中包含空格的项目。
答案 13 :(得分:0)
我同时尝试了一些,所以我不确定哪一个是好的。
创建了一个通配符应用程序ID(名称通配符,Bunde标识符*),为此应用程序创建了一个配置文件,并使用此配置文件对ipa签名。
在配置门户上注册了一个设备。
将我链接应用程序dev.html的文件命名为index.html
答案 14 :(得分:0)
我发现'无法使用index.html'来安装ios 6。通过从'index.html'更改为'dev.html'来修复。希望能帮到某人
答案 15 :(得分:0)
我完全按照你所描述的那样遇到了这个问题,我的问题结果是我错过了网址中的“http://”。将此部分添加到.plist文件的url字段后,一切正常。希望它有所帮助!
答案 16 :(得分:-1)
我认为您还需要将其设为https,如同 https://mydomain