背景
没有自建iOS测试服务,iOS测试大多依赖蒲公英测试平台或者fir.im,若没有遇到什么问题,继续使用第三方平台也未尝不可。
使用第三方的测试平台,可能遇到的一些问题,下边列举一下:
- 安全不可控:测试包的安全问题,泄漏测试包,破解风险增大
- 网络不可控:下载慢,可能是偶尔慢,但是慢的时候是真慢,砸手机的冲动都有
- 第三方平台限制:杂七杂八的,比如下载次数有限,另外有些还必须要填写各种资料等
楼主使用python+react全栈搭建iOS测试平台,代码暂时不开源,实现过程有问题可以一起沟通。
iOS测试包安装流程
iOS设备发起请求,固定格式为:itms-services://?action=download-manifest&url=xxx.plist
url指向manifest文件在服务端的地址,manifest文件(xx.plist)中包含了iOS安装包的图标,iOS安装包服务端地址等信息,iOS设备会自动获取manifest文件中的这些信息并自动开始下载安装。安装完成后会校验签名,签名不通过iOS设备会立即删除此app。
实现方案
自己搭建iOS测试服务,技术上没有太大难度,但是一般的服务端开发,比如java后端,他并不懂iOS测试包构建,签名校验,下载安装流程等相关知识,就导致懂的人不会写服务端,会写服务端业务的人不懂技术实现。
服务端几个必要的接口:
- 上传ipa:接收iOS测试包,即.ipa文件
- 上传manifest:manifest文件下载接口
- 图标地址:ipa包的图标57x57,全尺寸图标512x512,png格式,配置在manifest文件中
- 下载ipa:苹果安装要求,必须支持https,配置在manifest文件中
- 下载列表:供前端页面展示
上传处理流程
1.接收并保存.ipa包
2.ipa包改名zip,解压后分析payload文件夹下的info.plist文件,获取bundleId,version等测试包信息
3.生成manifest文件,网上有示例,搜索一下,改一些参数即可。
下载列表
可以拼接好itms-services://?action=download-manifest&url=xxx.plist地址给前端,再附加一些必要的参数,比如标题,版本,分支信息等。
需要注意的点也就这么多吧,其他都是常规的业务处理,有不懂欢迎留言。