无需iTunes,无线发布iOS App

无需iTunes,无线发布iOS App
http://www.iinterest.net/2011/09/22/installing-apps-wirelessly-ipa/

苹果在iOS4中新增了一项功能,就是无线发布iOS App——用户不需要经过iTunes,只用在Safari中点击一个链接就可以下载并安装应用。
实现起来非常简单,只需两步:
1.创建HTML页面
该页面用于发布App,我们可以在这个页面添加诸如软件介绍,更新说明等信息…当然核心代码是这个:
<a href="itms-services://?action=download-manifest&url=http://iinterest.net/
manifest.plist">Install App</a>

当用户使用Safari浏览器浏览这个页面并点击该链接时,iOS设备会自动识别,返回HOME界面下载并安装该App,就和我们在iTunes中点击下载按钮的效果一致。

2.创建manifest.plist文件
manifest.plist用于记录App的一些重要信息如:下载url、软件图标url、软件名称等,关于manifest.plist完整例子可以在苹果的开发文档中找到(在最后)。
当然,其实并不需要那么详尽的软件信息,这里给个更为精简的例子:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-AppleDTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<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>http://www.iinterest.net/ipa/Everlight-3.1-Nathan1233.ipa</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>http://www.iinterest.net/webapp/images/ifw114.png</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>http://www.iinterest.net/webapp/images/ifw114.png</string>
</dict>
</array><key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>net.iinterest.www</string>
<key>bundle-version</key>
<string>8.0.3.99</string>
<key>kind</key>
<string>software</string>
<key>subtitle</key>
<string>Everlight</string>
<key>title</key>
<string>Everlight</string>
</dict>
</dict>
</array>
</dict>
</plist>

结构应该说是一目了然,所以这里就不做说明了。
PS:在第一步的链接代码中有这么一段:“http://iinterest.net/
manifest.plist”,就是指定 manifest.plist 的路径;路径和名称都是可以修改的。

至此,一个无线发布App的页面就OK了,真的是非常简单;当然苹果肯定不会这么跟自己的App stroe过不去!为此你需要购买一个企业版的证书 $299/year。。。
如果走正常渠道的话,那么到这里就结束了,下面介绍一些特别的方法:

[$99开发证书]
如果你拥有$99的个人版开发证书,那么恭喜,现在也可以使用无线发布功能。
Xcode3.X的方法可以看这篇文章:
How To Distribute Your IOS Apps Over The Air
Xcode4 方法类似,不同点在于:
选择用“Product > Archive”编译程序;
然后在Organizer中选择需要打包的程序,然后点击“Share”;
因为我没有开发证书,所以不能做到完全演示,能确定的是Xcode4也可以成功发布,剩下的需要摸索。(PS:如果哪位有实现的完整方法,非常期望能够分享出来,方便的话写在留言中就行。)

[越狱用户]
针对越狱用户的无线发布,我制作了个DEMO,现在还不完美,感兴趣可以使用iOS设备上的safari访问DEMO页面,点击“安装Everlight-3.1(一个手电筒软件)”,此时会出现一个系统提示,“确定”后会开始下载并安装软件(进度条会有点问题,这与我的虚拟主机有关),当安装完毕后,HOME界面的软件图标会立刻消失,这时重载springboard(或者重启设备),返回HOME界面后软件图标出现,并可正常运行。

DEMO的实现方法还是上面介绍的两步,不同之处在于使用了已破解的软件包,虽然安装完毕后需要重载springboard才能使用,但至少说明理论上是可行的,目前正在进一步研究,希望能够找到比较完美的解决方案。

Demo URL:http://iinterest.net/ipa/installs.html