我接触苹果签名已经快六年了,从最早自己折腾个人开发者证书签名,到给身边的独立开发者、中小商家做IPA签名分发,大大小小的坑踩过不少,也摸透了市面上各种签名模式的门道。很多人对苹果签名的印象还停留在“动不动就掉签”,其实那都是没选对模式和渠道,这些年我大半项目都靠签名稳定运行,好用程度远远超出很多人的想象。

先从最基础的签名技术原理说起吧,苹果iOS系统本身是闭源的,所有能正常安装运行的App,都必须经过合法签名——官方上架App Store的应用,是苹果官方完成签名,系统会直接信任。而很多无法走官方上架的应用,比如内测应用、企业内部工具、不符合上架规则的垂直行业应用,就需要用苹果开发者账号生成的合法证书,给IPA包做签名,让系统认为这个应用是经过授权的,从而允许安装运行,这就是IPA签名的核心逻辑。很多中小商家不想花大价钱做原生开发,会先把H5页面封装成IPA包,也就是大家常说的H5封装,封装好的包同样需要签名才能安装,这也是我这些年接的比较多的需求。

接下来聊聊现在主流服务商都在用的证书池机制,最早做企业签名的时候,都是单证书签名,一个企业开发者证书给一堆应用签,只要有一个应用违规被苹果检测到,整个证书被封,所有签过的应用全部掉签,稳定性极差。后来行业里就出来了证书池机制:服务商提前储备几十上百个不同的企业开发者证书,做成一个资源池,给用户签名的时候自动分配证书,还会做隔离处理,违规应用绝对不允许进池,同一个证书签的应用数量控制在安全范围内,再搭配企业签名防检测机制,比如定期清理被苹果标记的证书、给不同类型的应用分开证书避免关联、定期更新证书配置避开苹果风控扫描。一旦某一个证书出问题,系统会自动从池子里调出合格的新证书给你重签,十几分钟就能完成补签,不会影响用户使用,证书池加企业签名防检测这套组合打下来,稳定性比单证书高了不止一个档次。

然后是大家经常听到的UDID绑定,UDID就是每一台苹果设备唯一的识别码,苹果对不同类型的开发者账号有不同的限制:个人开发者账号一年688,一个账号最多只能绑定100台设备的UDID,所以不管是早期的内测签名还是现在的超级签名,都需要把用户设备的UDID添加到开发者后台的描述文件里,才能完成签名,只有绑定了UDID的设备才能正常打开安装好的应用。而企业开发者账号本身没有UDID绑定的限制,所以企业签名不需要每台设备绑UDID,多少用户都能装,这也是企业签名适合大用户量应用的核心原因。另外大家常听说的TF签名,其实是苹果官方的TestFlight内测平台,本质是走苹果官方签名,不需要自己绑UDID,用户点链接就能直接下载,因为是官方背书,所以稳定性极高,但TF有1万测试员的上限,还需要过苹果的审核,违规应用过不了,所以大多用来做小范围内测。

我自己也亲手操作过重签,给大家理一遍完整的重签流程:第一步,拿到开发者或者客户提供的未签名原始IPA包,如果是H5封装的应用,这一步就是封装好的未签名IPA;第二步,根据选择的签名类型,从服务商获取对应的证书和匹配的描述文件;第三步,用签名工具去掉IPA包里原有的无效签名,把新的证书和描述文件写入IPA,重新计算签名哈希值,完成签名替换;第四步,导出重签好的IPA包,企业签名直接生成下载链接,超级签名会根据用户的UDID实时签名生成下载链接,用户就能直接下载安装了。我最早自己折腾的时候,不懂证书和描述文件的匹配规则,签完之后一直提示“无法验证应用”,折腾了整整一天才弄好,后来找正规服务商合作,都是自动化流程,我只要上传IPA,几分钟就能出下载链接,非常省心。

聊完基础的技术点,再给大家说说我这么多年用下来,超级签名和企业签名的真实稳定性对比,还有不同渠道的价格,给新手做个参考。首先说价格,我接触过的各个渠道价格差异非常大:企业签名分共享版和独享版,共享版就是很多用户共用一个池子里的证书,一般每月价格在100到300元之间,那种几十块一个月的共享版,我劝大家绝对不要碰;独享版就是证书只给你一个人用,还搭配企业签名防检测和证书池调度,一般每月价格在1000到5000元不等,根据应用类型和用户量浮动,我自己做的内部工具,每月1800元,用了快两年非常稳定。超级签名是按UDID点数收费,一个UDID算一个点,正规渠道一个点每年5到10元,量大还能优惠,那种2到3元一个点的低价超级签名,大多用的是黑号或者共享个人账号,非常容易封号掉签。TF签名一般按次收费,一次300到800元,能稳定用三个月到半年,也有按月收费的,每月200元左右。官方上架的话,个人开发者自己申请账号只要688元一年,找代上架的话,根据应用难度从几千到几万元不等,过不了还大多不退费,不符合规则的应用没必要花这个钱。H5封装一般是一次性收费,两三百到一千元不等,看功能适配的复杂度,之后只需要每年付签名费就行,成本非常低。

接下来聊大家最关心的稳定性,我可以负责任的说,选对渠道和模式,80%的情况下都能稳定运行,掉签真的没有大家想的那么频繁。我自己手上现在五个在跑的项目,四个用的都是带企业签名防检测的独享企业签名,只有一个小范围内测项目用了TF签名,过去一整年,总共只掉过两次签:一次是去年苹果更新iOS16,调整了风控规则,有一个证书被标记,服务商当天上午就给我换了新证书补签,一个小时就弄好了,用户重新下载安装就行,几乎没影响业务;另一次是我自己更新IPA包的时候,配置写错了,属于我个人的问题,服务商也免费帮我重新签了,十分钟就搞定了。说真的,这种频率我完全能接受,一年掉两次,每次处理不到一小时,根本不会影响正常使用。

当然我也遇到过频繁掉签的坑,刚接触签名的时候,为了省成本,找过那种60块钱一个月的共享企业签名,结果半个月掉了三次,每次补签都要等大半天,那时候项目刚好推活动,几百个用户打不开应用,天天找我投诉,头都大了。后来又贪便宜试过2块钱一个点的超级签名,用了不到半个月,服务商手里的一批个人账号被苹果全封了,所有用户全掉签,服务商拖了三天才补签,差点把我项目搞黄。从那之后我就明白,一分钱一分货,想要稳定就不能贪便宜,做好企业签名防检测的独享企业签名,稳定性其实比超级签名还高。很多人觉得超级签名更稳,其实超级签名用的是个人开发者账号,一个账号最多100个UDID,很多低价超级签名都是把一个账号拆成好几份用,超量绑定UDID,苹果一查一个准,只要封号全掉签,我见过太多超级签名批量掉签的情况了。而做好企业签名防检测,搭配证书池机制的企业签名,只要应用本身不违规,大半年不掉签是常态,而且不需要绑定UDID,用户直接下载就能用,用户量多大都能撑,成本也比超级签名低很多。

至于大家担心的证书问题,正规服务商都会提前储备新证书,每天都会巡检证书状态,一旦发现某个证书被苹果标记,会提前给你换证书重签,根本不会等到证书被封掉签了才动手,我现在合作的服务商,每三个月都会主动给我更新一次证书配置,避开苹果最新的检测规则,所以这么久都没出过大规模掉签的问题。就算真的掉签,正规服务商都是免费补签,只要不是应用本身违规导致的掉签,都不会额外收费,补签速度也很快,大多一小时以内就能搞定。

这么多年用下来,我最大的感受就是,苹果签名技术现在已经非常成熟了,对于不能走官方上架的应用来说,真的是非常好用稳定的解决方案:能走官方上架当然最好,用户信任度最高,但很多应用因为规则限制根本上不了,这时候选对签名模式就很重要,小范围内测选TF签名,小用户量初期试水选超级签名,用户量上来之后,选带企业签名防检测的独享企业签名,性价比和稳定性都是最高的,H5封装加签名更是中小商家低成本做App的首选,我去年给三个本地社区商家做了H5封装加企业签名,用到现在都非常稳定,用户体验和原生App没差,成本只有原生开发的十分之一,商家都非常满意。掉签的问题确实存在,但只要选对正规服务商,对日常使用的影响微乎其微,这么多年我靠苹果签名落地了几十个项目,绝大多数都稳定运行,帮我和客户省了大量的开发和上架成本,也解决了很多不能上架的应用的分发难题,总的来说,只要选对渠道,苹果签名完全能满足大多数场景的使用需求。