Xcode6以前打包发布的时候可以产生一个ipa安装包和一个记录了发布信息的plist程序,然后将plist程序发布到公网上去。plist中记录了ipa的下载地址,在苹果系统的官方浏览器中可以识别itms-services
这样的一个协议,他会解析plist中程序的信息直接在设备上安装改程序。不过前提是你的安装包必须能够在这台设备上安装,如果按照正常的一个账号(非企业账号),他是只能在已经注册的设备上进行安装的,所以以个人或者公司账户开发的程序还是直接提交到App Store最为稳妥。不过这种方式就非常适合企业账号打包出来的程序。
流程
具体的发布流程也不复杂,从客户端这边开始,首先用户需要一台安装有safari的iPone或者iPad设备用safari请求访问
itms-services:///?action=download-manifest&url=https://you_site.com/file_name.plist
接下来IOS系统或者是safari(我不清楚这部分逻辑是IOS本身提供的还是safari解析然后调用系统的接口达到安装的目的)下载你的plist文件解析,然后下载ipa并安装。
文件格式
具体plist的文件格式是我从stackoverflow上找到的。如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD 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>[INSERT URL HERE]</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>[INSERT BUNDLE ID HERE]</string>
<key>bundle-version</key>
<string>[INSERT VERSION HERE]</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>[INSERT APP TITLE HERE]</string>
</dict>
</dict>
</array>
</dict>
</plist>
几个方括号标记的地方填上你需要的值,这份plist就完成了。
注意
从IOS7之后如果plist不是放在一个https的站点访问的话无法完成安装,所以plist存放的地方就变的麻烦了,之前我们随便建立一个站点能够访问到这个东西就可以了,现在还得找个https的链接。注意:这里得https服务器,CA证书必须是有CA官方下发得证书,自己在本地弄的哪个是不好用的。但是可以在github上创建一个公开项目。然后在项目里创建plist文件,最后获取plist文件的地址。
详细的下载URL就是:itms-services://?action=download-manifest&url=https://raw.githubusercontent.com/HanXiaoTeng/weiNiXuanZe/master/weiNiXuanZe.plist
附plist实例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD 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://app.caocaosong.cn/app/CCExpresser.ipa</string> //软件地址
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>http://app.caocaosong.cn/app/Icon@2x.png</string> //下载时的图标地址
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>http://app.caocaosong.cn/app/Icon.png</string> <span style="line-height: 20.4px; font-family: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit;">//下载时的图标地址</span>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.***.**</string> //bundle id
<key>bundle-version</key>
<string>1.0</string> //版本号
<key>kind</key>
<string>software</string>
<key>title</key>
<string>软件名</string> //软件名
</dict>
</dict>
</array>
</dict>
</plist>