This post was updated 2533 days ago and some of the ideas may be out of date.
前言:
苹果提供了一个以无线方式安装企业内部应用的策略,我们可以利用这个策略去内测分发自己的iOS应用。下面我们一步步来实现自己的内测分发。
步骤:
一、搭建内测分发站点
这里我就不多说了,有一台自己的服务器,使用lnmp或者lamp搭建一个web站点就可以了。推荐使用nginx,这个在配置SSL证书的时候会简单。
二、申请SSL证书
苹果在今年出来的政策,全部数据传输都要使用HTTPS才可以。SSL证书可以使用免费的,也可以使用收费的。
免费的推荐使用景安的->传送门
收费的推荐使用namecheap的->传送门
具体安装方法我就不多说了。
三、建立内测分发目录
我们在绑定好域名之后,在服务器上面建立一个虚拟主机用于内测分发,并上传好Display Image(5757)和Full Size Image(512512)的程序icon。
例如:
https://www.ianisme.com/myapp/image57.png
https://www.ianisme.com/myapp/image512.png
四、添加udid
既然是内测分发,我们当然是给公司内部人员下载的了,需要把公司内部人员的设备的udid添加到自己的开发者账号中去。
五、打ipa包并上传
我们使用自己的开发者账号进行打包
在打包类型中我们选择Save for Ad Hoc Deployment点击下一步
我使用的是Xcode7.1,这里勾选上Include manifest for over-the-air installation
然后在这里填上应用的名字,后面的选项填入即将上传服务器的ipa的地址以及图片地址,
例如:
https://www.ianisme.com/myapp/myapp.ipa
https://www.ianisme.com/myapp/image57.png
https://www.ianisme.com/myapp/image512.png
打包完成后会生成一个manifest.plist文件和一个ipa文件
将manifest.plist和ipa文件上传到自己的服务器https://www.ianisme.com/myapp/目录中去。
如果Xcode版本较低或者以后对APP进行迭代更新,我们都可以直接创建manifest.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>https://www.ianisme.com/myapp/myapp.ipa</string>// ipa地址
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>url</key>
<string>https://www.ianisme.com/myapp/image57.png</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>url</key>
<string>https://www.ianisme.com/myapp/image512.png</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.ianisme.myapp</string>// 你APP的bundleId
<key>bundle-version</key>
<string>1.0</string>// 分发程序的版本
<key>kind</key>
<string>software</string>
<key>title</key>
<string>myapp</string>
</dict>
</dict>
</array>
</dict>
</plist>
可以对其中的内容进行更改。
###六、编写前端页面进行分发
我们有两种方式
第1种:
我们在网页的head标签中加入JS代码,当用户访问网页的时候自动触发,进行下载。
<script>
var url = "https://www.ianisme.com/myapp/manifest.plist";
window.location = "itms-services://?action=download-manifest&url=" + url;
</script>
第2种:
打造一个炫酷的页面(此处省略),以web链接的形式当用户点击触发a标签的时候进行下载
<a href="itms-services://?action=download-manifest&url=https://www.ianisme.com/myapp/manifest.plist">点击下载</a>
总结:
其实我们可以有fir.im、pre.im等第三方分发平台以及苹果自己的TestFlight可以选择,有人说第三方服务可能会存在不可抗拒的因素,而TestFlight的连接速度就非常慢,而我还是喜欢用这些三方平台,我觉得在内测中,我们应该把时间浪费在有意义的事情上面。
参与讨论