所谓OTA
OTA即Over-the-Air,是Apple在 iOS4中新加的一项技术,目的是让开发者能够脱离Appstore,实现从自己的服务器下载并安装iOS应用。简单地说,就是用户只需要在Safari中点开一条链接,就能直接在主界面中安装App。
OTA方式安装,是通过Safari解析链接中的"itms-services://"来实现的。例如:
<a title="iPhone" href="itms-services://?action=download-manifest&url=https://192.168.10.193/installIPA.plist"> Iphone Download</a>
Safari会去读取installIPA.plist中的信息,如:iOS应用的ipa文件、版本、安装地址等。这里打包的ipa有几种方式:
1、通过企业证书签名打包发布(比如pp助手,同步推,迅雷等永远不能上架AppStore的应用厂商就是这么干的)
2、通过个人证书签名打包发布(Ad_hoc)
3、不签名直接打包,只能安装在越狱机器上
我们这里实现第二种,有企业证书的最好用第一种,注意在打包之前配置好证书(有企业证书的配置企业证书):
实现步骤:
1、打包签名ipa
2、发布到webserver上面
3、Safari输入地址,直接点击安装
用打包工具打包
可以直接用Xcode自带的archivie工具打包,但是这种操作繁琐,archive完了之后还要各种点,不推荐。
现在有很多现成的打包工具,比如https://github.com/nomad/shenzhen,还有fir-cli等。这里采用fir的命令行工具fir-cli https://github.com/FIRHQ/fir-cli。
先安装:
sudo gem install fir-cli -v 1.5.0
安装完之后敲fir命令可能提示:
Unable to activate fir-cli-1.5.0, because CFPropertyList-3.0.0 conflicts with CFPropertyList (~> 2.3) (Gem::ConflictError)
执行下面命令修复:
sudo gem uninstall CFPropertyList -v 3.0
sudo gem install CFPropertyList -v 2.3.6
在工程根目录下执行打包命令:
fir build_ipa ./ -v -o ~/Desktop/ -B master -S TestAppRelease -n TestAppRelease
这里解释一下:
fir build_ipa是打包命令,-v是啰嗦模式,就是会把打包日志都打印出来,方便查看错误信息,-o后面的参数是输出ipa的路径,-B是branch分支,-S是scheme名称,-n是ipa的名称。还有其他的参数,具体可查看fir-cli的官方说明。
执行命令可能会提示这个错误:
xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH
下载PackageApplication https://www.jianshu.com/p/88bb51cba34d,解压缩到目录:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
执行命令:
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/
chmod +x /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication
重新执行上面的fir build_ipa命令,打包完成之后会看到ipa文件和符号文件:
上传到webserver
1、上传到fir,或者蒲公英等第三方平台:直接去注册账号,上传。
2、上传到自己的webserver:由于OTA限制只能使用https而不是http,因此又有两种选择:1、发布到带域名的外网webserver;2、发布到内网IP地址webserver。第一种域名固定,客户端不用安装证书,第二种内网下载速度更快,但是现在多是动态分配ip,如果作为webserver的机器IP地址变换,需要下载客户端多次安装证书。下面说第二种方法。
有很多教程自己搭建本地内网webserver的,比如https://www.jianshu.com/p/35ca63ec0d8e,但是比较繁琐,需要自己配置ssl证书,自己配置plist文件等。这里使用工具
https://github.com/bumaociyuan/ios-ipa-server,省去上述繁琐步骤。安装ios-ipa-server:
sudo npm install -g ios-ipa-server
新建一个文件夹,将ipa文件拷贝进去
到该文件夹下面开启服务:
ios-ipa-server
看到有下面的服务开启的提示:
Open download page https://192.168.0.107:1234/download
在safari上面输入https://192.168.0.107:1234/download,会看到下面的页面
点击”显示详细信息“-”继续访问“
点击安装证书,安装好证书之后,再点击下载,如果还是无法下载,说明你的系统是10.3以后的系统,进入设置 > 通用 > 关于本机 > 证书信任设置 > 打开对应证书的switch开关:
再返回safari,点击下载。如果下载安装的app是灰色的不能用,应该是打包的证书设置有问题,去前面设置企业证书或者ad hoc证书重新打包。
此外建议webserver的机器设置为固定ip,避免ip变动,安装的客户端又需要安装一遍证书。
参考:
https://www.jianshu.com/p/35ca63ec0d8e
https://www.jianshu.com/p/88bb51cba34d
https://github.com/bumaociyuan/ios-ipa-server
网友评论