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点击下一步
201511291
我使用的是Xcode7.1,这里勾选上Include manifest for over-the-air installation
201511292
然后在这里填上应用的名字,后面的选项填入即将上传服务器的ipa的地址以及图片地址,
201511293
例如:
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的连接速度就非常慢,而我还是喜欢用这些三方平台,我觉得在内测中,我们应该把时间浪费在有意义的事情上面。