无线iphone应用程序分发 – 与itms服务协议的问题
我遵循苹果和其他博客的所有方向。 我已经存档了应用程序,制作了.plist和.ipa文件,将它们放在服务器上并链接到它们。 我可以安assembly置文件就好了。 但是当我点击链接安装应用程序(在iPhone上的Safari),没有任何反应。 没有错误信息。 没有。 这是链接的样子:
<a href="itms-services://?action=download-manifest&url=http://mydomain.com/test/myApp.plist">Install the app</a>
任何想法,为什么这是行不通的? 看来itms-services协议已经死了。 MIMEtypes是好的(我可以指向地址栏中的plist文件,并显示为文本)。
当我在清单文件和应用程序归档文件的文件名中有一个空格时,我有类似的症状。 我删除了他们的所有空间,无线安装为我工作。 它看起来像你的清单没有空间,所以也许你的应用程序文件呢?
答案其实很简单:URL需要被“双重转义”,即
itms-services://?action=download-manifest&url=https://example.com/My%2520App.plist
这是因为该值在被视为另一个URL之前未被转义为https://example.com/My%20App.plist
。 这会被example.com
上的服务器转义为空间。
parsing器不会特别处理+ ...&url=https://.../test/a+b
导致出现在Apache日志中的"GET /test/a+b HTTP/1.1"
。 (假设所有查询string都是application/x-www-form-urlencoded
;这只是在HTML中标准化是不明智的。)
顺便说一下,它看起来像itms-services使用+[NSURL URLWithString:]
来validationurl: url=.../My%20App.plist
导致请求,因为[NSURL URLWithString:@"https://.../My App.plist"]
返回nil
。 然而,在NSURL中存在一个长期存在的错误:它将在最后转义一个无效的(BMP)字符而不是返回nil。 我的testing用例
-
url=.../test/%3c
导致日志"GET /test/< HTTP/1.1"
(这是绝对无效的HTTP!) -
url=.../test/%0a
导致设备发生错误,但不会发送日志消息(因为Apache将其视为格式错误的请求) -
url=.../test/%0d
结果在日志"GET /test/\r HTTP/1.1"
itms-services是一个标识符,通过这个标识符,apple / iphone将识别它应该validation证书,并且应该安装它。
要在安装ipa文件之前validationconfiguration文件,它将连接到“ax.init.itunes.apple.com”和“ocsp.apple.com”。
如果您使用任何内联网连接,请检查这些链接是否可访问? 如果没有,则无法通过无线安装应用程序。
设备上的最低操作系统应为4.0
我正在使用IIS 6.0和index.html页面正在加载,但当用户点击从苹果设备(即)iPhone 4的.plist链接,我一直得到“无法连接www.mywebsite.com”。 除了添加MIMEtypes之外,解决scheme是共享.plist文件所在的Web共享并且是最重要的:更改清单.plist文件的安全访问权限。 完全控制了默认的Windows用户
使您的服务器的MIME设置正确。
谷歌为它,你会find正确的方法
好像你在这里有几个指针可能是什么问题,下次:从Xcode组织者检查设备控制台,它通常包含有关失败的OTA分配有用的信息。
确保所有的URL都是完全合格的。 包括那些为PNG文件。
我有和上面一样的问题。 在尝试了上述所有的失败之后,我发现当我归档应用程序时,我没有在设置中放入应用程序的URL,因此这个URL永远不会在我的plist文件中。 确保当你看你的plist文件时,应用程序的URL在那里。
和其他许多人一样,我也遇到了这个问题的守护进程。 在我的情况下,问题是plist文件格式不正确。 请确保该文件遵循文档中列出的确切模式: http : //developer.apple.com/library/ios/#featuredarticles/FA_Wireless_Enterprise_App_Distribution/Introduction/Introduction.html
对于任何有兴趣dynamic生成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'];
另外,确保mimetypes是以application/xml
forms返回的。
我遇到了这个问题,正如你所描述的,我的问题竟然是我错过了“http://”的url。 在将这部分添加到.plist文件的url字段后,一切正常。 希望能帮助到你!
使用AdHoc供应configuration文件分发我的应用程序时遇到了类似的问题。 我尝试删除旧的configuration文件,生成新的configuration文件,重新启动Xcode,清理和重build,检查URLpath名等。该应用程序将安装在一些设备,但不是其他人。
我的工作是改变应用程序版本,并build立一个新的号码。
我发现'不能使用index.html'的ios 6来安装应用程序。 通过从“index.html”更改为“dev.html”修复。 希望能帮助别人
我同时尝试了一些,所以我不确定哪一个是好的。
创build一个通配符应用程序id(名称通配符,bunde标识符*),为此应用程序创build一个configuration文件,并用此configuration文件签署ipa。
在供应门户上注册了一个设备。
命名文件我链接应用dev.html而不是index.html
正确的解决scheme是用“+”(加号)replace空格为… url = …表示它是查询string参数,当为URL编码时,它们将被编码为表单数据参数。
从这里W3.org – HTML文档中的表单 :
“控制名和值被转义,空格字符被replace为'+',然后保留字符被转义,如[RFC1738]”
PS解决了我们在开发icenium.com期间遇到的同样的问题。 您可以检查AdHoc条款在那里签名,看看它是如何工作的空间名称的项目。
如果您通过电子邮件发送链接,则不能在电子邮件中使用HTML格式。 您必须使用“富文本”格式
不知道为什么,但多数民众赞成如何(至less与Outlook)