由于近段时间政策变动,企业证书不断被封停。
市场上开发出一种新的签名方式,超级签名。
超级签名
签名原理
签名原理简单点说使用了苹果提供给开发者的Ad-Hoc分发通道,把安装设备当做开发设备进行分发。
既然签名用是 Ad-Hoc ,那么 Ad-Hoc 所具有的优劣势也一并继承了下来:
优势:
直接分发,安装即可运行,不需要用户做企业证书的信任操作 目前稳定,不会有证书吊销导致的业务风险(后续苹果政策风险非常高)
缺点:
单开发者账号的iPhone设备数量只有100个,导致分发成本非常高(99美元/1年/100个设备) 开发者账号需要预先写入安装设备的UDID,在工具链不通的情况下,获取用户的UDID相对困难和繁琐,而且手动写入UDID不存在商用可行性,当然目前这个缺点被解决了
整体架构
接下来我们就看看整套机制是如何进行的:
1.设备安装描述文件后,会向服务器发送设备的UDID。2.服务器收到UDID后,将UDID注册到某个开发者账号下。3.再生成签名用的描述文件,给IPA签名。4.然后iPA传Server,使用itms-services方式让用户下载。
技术细节
1,获得用户UDID
苹果允许用户通过浏览器安装配置文件,来上传UDID到服务器。
服务器需返回301重定向到特定网站
.mobileConfig 文件实例:
获得udid 服务端接受UDID需要返回301,示例代码:
2,解析苹果给出的XML文件,并取得对应数据
解析XML并返回 在这个时候,服务器就已经有了用户的udid了。
3,开发者中心更新UDID。
这里用到的框架是fastlane。框架使用起来简单易用。
调用实例代码:
更新UDID 更新完成UDID后,从苹果商店下载相关证书,并准备重签名。
4,重签名
看了很多文章,都是使用Isign来完成应用重签名。但是这种机制只能运行在mac电脑上。 mac服务器成本昂贵。要支持高并发成本非常高。
在这里,我们使用p12证书来实现在linux服务器上也能重签名。
首先我们要先将cer文件和csr文件转换为p12文件。
实例代码:
转换P12文件 转换完P12文件后,可以通过重签名脚本完成应用重签名。
实例代码:
重签名 到此时,我们的重签名流程就已经完成了。
然后将ipa包上传到OSS服务上,并配置itms-service服务来做分发。
itms-service服务代码实例:
itms-service服务文件
效果图:
效果图
效果图
相关三方库:
获取设备UDID的第三方库
github.com/shaojiankui…
Apple Developer Center 自动化工具:
github.com/fastlane/fa…
OTA 分发应用工具:
github.com/atelierdumo…