我接触苹果签名行业快六年了,从最早企业签名刚刚兴起,到后来超级签名抢占市场,再到TF签名普及,前前后后帮上百个创业团队、中小项目做过IPA签名,也帮很多做轻应用的客户做过H5封装后的签名分发,帮不少项目过渡过官方上架前的内测阶段,踩过坑也攒了不少靠谱的经验,今天就以第一人称给大家分享实打实的干货,把大家关心的核心问题讲透。
首先从最基础的签名技术原理说起,很多刚接触iOS分发的朋友都搞不懂为什么需要签名,其实核心逻辑和iOS的闭源机制有关:iOS系统只允许安装经过苹果信任认证的应用,任何没有经过苹果签名的IPA包,安装时都会直接提示“不可信开发者”或者“无法安装”,根本没法正常运行。所谓苹果签名,本质就是用苹果官方颁发给开发者的证书,对未上架的IPA包进行加密签名,让iOS系统验证的时候,判定这个应用来自苹果认可的开发者,从而放行安装。官方上架其实就是把App提交给苹果审核,审核通过后由苹果做官方签名,所有用户都能从App Store下载安装,这是最稳定的方式,但门槛极高,审核规则非常严格,很多不符合规范的应用,比如内部工具、定制化项目、beta内测版、一些特定场景的工具应用,根本没法通过官方上架审核,所以才催生了第三方签名产业,我们常说的IPA签名,就是给这些没法上架的IPA包做签名操作,而H5封装则是很多中小团队把H5网页打包成IPA包后,再做签名分发的降本方式,现在非常普及。
接下来聊聊很多人都一知半解的证书池机制,这其实是现在稳定签名的核心保障。最早的企业签名都是单证书模式,也就是服务商拿一张企业开发者证书,所有客户的IPA包都签在这张证书上,苹果的风控机制会检测单张证书的装机量、下载频率,如果超过阈值就会直接吊销证书,那所有签在这张证书上的包都会掉签,所以早年企业签名掉签概率非常高。后来行业慢慢演化出了证书池机制:服务商批量储备几十上百张正规的企业开发者证书,做成一个资源池,每次给新IPA包签名的时候,都会自动分配当前负载最低、装机量没超阈值的证书,严格控制单张证书的装机量和下载频率,一张证书签够一定数量的包之后就不再新增应用,从根源上降低触发苹果风控的概率。我现在长期合作的正规服务商,证书池里光稳定的未被标记过的企业证书就有五十多张,这么多年下来,大部分签名的包都能做到大半年甚至一年多不掉签,稳定性比早年的单证书模式提升了不止一个档次。
然后说说UDID绑定,这个是超级签名、TF签名都绕不开的核心逻辑。UDID是每台iOS设备独一无二的识别码,苹果的开发者规则里,不管是个人开发者账号还是企业账号,绑定测试设备都需要用到UDID。超级签名的本质,就是用个人开发者账号的证书来做签名,每个个人开发者账号最多只能绑定100台设备,所以超级签名需要给每个要安装应用的用户设备绑定UDID,把UDID添加到个人开发者账号的设备列表里,才能生成对应的描述文件完成签名。我最早帮创业团队做百人内测的时候,就用单个个人开发者账号做超级签名,刚好够一百台设备用,流程非常顺畅,用户只需要点击安装链接,系统会自动获取UDID完成绑定和签名,不需要用户手动查询复制UDID,体验非常好。而TF签名作为苹果官方的内测渠道,其实也涉及UDID绑定,TF也就是TestFlight,苹果允许每个内测项目最多绑定一万名测试员,需要把用户UDID添加到内测列表才能安装,不过整个流程都是苹果官方处理,稳定性比第三方签名更高。
聊完基础机制,再说说重签流程,我自己早年也搭过私人的重签服务器,对整个流程门清。不管是超级签名还是企业签名,重签的核心流程其实大同小异:第一步是用户上传打包好的未签名原始IPA包,如果是H5封装的应用,就是先把H5内容打包成IPA格式,再上传到签名平台;第二步是系统自动解析IPA包的信息,比如包名、Bundle ID、应用名称,然后根据用户选择的签名类型分配对应的证书;如果是企业签名,不需要绑定用户UDID,直接用分配好的企业证书和描述文件对IPA进行重签名,完成后直接生成通用下载链接,所有用户都能下载安装,流程非常快,一般几分钟就能出链接。如果是超级签名,就会等用户访问下载链接的时候,自动获取用户设备的UDID,然后把UDID添加到有剩余额度的个人开发者账号列表,再重新生成对应描述文件对IPA签名,最后给用户提供下载,整个过程都是自动化的,用户完全不需要额外操作,体验非常流畅。
接下来就是大家最关心的,超级签名与企业签名的真实稳定性对比,还有不同渠道的价格差异,我接触过这么多服务商,也帮客户踩过无数坑,对这块的体会非常深。先给大家报一下现在市场的真实价格,大家心里有个底:传统的普通企业共享签名,也就是很多个客户的包都签在同一张证书里,价格非常便宜,我见过最低的一个月只要60块,大部分也就一百多块钱一个月,这种就是大家说的普通签名,和超级签名的差异非常大。然后是证书池模式的稳定企业签名,一般按包按季度或者按年收费,一个包季度收费大概是300到600块,年卡大概是1000到1800块,如果是独立证书,也就是一证一包,整个证书只签你一个包,价格就更高,一个月大概是800到1600块,一年下来差不多上万,适合大用户量的项目。然后是超级签名,超级签名一般按装机量收费,也就是绑定一个UDID算一个额度,现在市场价大概是每个设备1到3块钱,一千个设备差不多1000到2500块,正规服务商都是同一个UDID终身只扣一次额度,不管你删了重装多少次都不重复扣费,不良商家才会重复扣费,这点大家一定要注意。然后是TF签名,TF签名一般按包收费,一个包有效期三个月到一年,价格大概是300到800块,因为是官方渠道,稳定性非常高。
这么多年用下来我最大的体会就是,只要找对正规渠道,80%以上的签名服务都是稳定好用的,完全能满足项目的分发需求。我去年帮一个本地家政公司做了内部员工用的管理工具,是H5封装成IPA之后做的超级签名,总共不到180台设备,到现在一年零两个月了,只掉过一次签,还是因为其中一个绑定的个人开发者账号被苹果封禁,服务商当天就给重新换了证书补签,几个小时就恢复正常使用,完全没耽误员工办公。还有一个做行业测绘工具的客户,有六千多终端用户,用的是证书池的稳定企业签名,上线一年半了,只掉过两次,掉签之后服务商当天就补签完成,用户只需要重启一下App就能用,几乎没有感知。我自己一直在用的一个内测版视频剪辑工具,就是签的独立证书企业签名,用了快两年了都没掉过签,稳定性一点不比官方上架的差。
当然我也遇到过掉签、证书出问题的情况,早年贪便宜找过那种99块钱一年的普通共享企业签名,给一个内测项目签名,结果不到一周就掉签了,找商家补签,补完之后第四天又掉了,来回掉了四次,最后商家直接失联了,害得项目内测推迟了一周,亏了不少钱。还有一次遇到服务商整批证书被苹果 revoke,一下几十个包都掉签了,不过我合作的正规服务商有备用证书池,当天就给所有客户重新分配了证书补签,大半天就全部恢复了,没造成太大的损失。补签其实现在都是正规服务商的基础服务,只要不是那种小作坊,掉签之后都会免费及时补签,不会额外收费,这点大家选服务商的时候提前问清楚就行。
对比下来,超级签名和普通共享企业签名的区别非常明显:超级签名用个人开发者账号绑定UDID,苹果对个人账号的风控比企业账号松很多,只要控制好量,稳定性比普通共享签名高太多,普通签名动不动就掉签,超级签名很少出现这种情况,超级签名适合小团队做内测,几百台设备成本很低,用起来非常方便。而稳定企业签名适合大用户量的项目,不限制装机量,平均下来成本比超级签名低很多,只要用证书池模式,稳定性也非常靠谱。TF签名是现在稳定性最高的选项,毕竟是苹果官方的内测渠道,几乎不会掉签,适合大多数不能官方上架的项目,价格也不贵,就是审核比第三方签名严一点,但比官方上架宽松太多。
总的来说,现在苹果签名技术已经非常成熟了,只要不贪便宜找那种报价极低的小作坊,选有正规证书池、能及时补签的服务商,不管是超级签名还是稳定企业签名,都能长期稳定使用,满足内测、分发的需求,对于没法官方上架的项目来说,是性价比非常高的分发选择。