接触苹果iOS签名行业快六年了,从最开始帮创业朋友做内测应用签名,到现在帮上百个客户稳定维护签名服务,大大小小的坑踩过,各种证书问题、掉签补签的场景也遇见过,今天就以我自己的实际经验,给大家讲清楚苹果签名里的核心逻辑,还有大家最关心的稳定性问题。

首先说最基础的iOS签名技术原理,很多刚接触的朋友搞不懂为什么非要签名才能装APP,本质上这是iOS系统的安全机制,苹果规定所有能在iOS设备上启动运行的应用,都必须获得苹果官方的授权签名,相当于给APP发了一张准入证,系统会校验这个签名的合法性,没有签名或者签名失效的APP,会直接被内核禁止启动。我们常说的IPA签名,就是对已经打包好的IPA应用包,用苹果颁发的合法开发者证书做加密签名的过程,很多客户会把H5网页封装成IPA包之后做签名,也就是我们常说的H5封装签名,这种需求现在非常多,大多是因为应用不符合官方上架要求,没法上线App Store,才需要做第三方签名。

接下来讲签名行业里保证稳定的核心机制:证书池。我刚入行的时候,手里只有两张个人开发者证书,接了一百多个用户的量都压在这两张证书上,结果不到半个月就被苹果吊销了,所有用户全掉签,那次给客户补签到凌晨两点,还给人赔了不少违约金,从那之后我才慢慢搭建了自己的证书池机制。简单来说,证书池就是把几十上百张来自不同开发者账号的合法证书,整合到同一个签名调度系统里,不把所有应用、所有用户的量都集中在少数几张证书上,而是把用户量分散到不同证书里,单张证书绑定的用户量严格控制在苹果允许的安全范围内。就算某一张证书被苹果 revoke 吊销,也只会影响这张证书上的几十个用户,不会牵连整个平台的所有用户,而且成熟的证书池机制会自动识别失效证书,自动把掉签的应用切到可用证书上重新签名,大部分时候用户甚至感觉不到掉签,只需要重新打开一次下载链接就能安装,不用额外操作。我现在的证书池维持了130多张个人开发者证书、26张企业开发者证书,还有30张备用证书随时待命,这么多年下来,很少出现大规模掉签的情况。

然后说超级签名最核心的UDID绑定机制,超级签名本质上就是用个人开发者账号做的签名,苹果给个人开发者账号的权限是,一个账号最多可以绑定100台iOS设备的UDID,只有绑定了UDID的设备,才能安装这个账号签名的应用。所以整个超级签名的流程里,UDID绑定是最关键的一步:用户要安装应用的时候,首先需要通过苹果官网接口获取设备的UDID,系统再把这个UDID添加到对应开发者账号的设备列表里,之后才能生成对应的描述文件做签名。我刚做超级签名的时候,还试过让用户手动查询UDID然后发给我,不仅效率低,还经常输错,十个里面有三个错的,后来改成了自动获取UDID的链接,用户点一下就能自动上传,省了超多麻烦。说到ios超级签名应用更新,这里也给大家提个醒,很多新手不知道,用户更新应用的时候,已经绑定过的UDID不需要重新绑定,也不会占用新的名额,只要重新对新的IPA包做签名就行,很多不良商家会借更新的名义重复收下载费,大家一定要注意这点。

讲完核心机制,再给大家说一下标准的重签流程,不管是新签还是掉签之后的补签,流程都差不多:第一步是接收用户的IPA包,我会先做一轮包检测,检查IPA有没有配置错误,有没有违规内容,是不是H5封装的时候留下了遗留的签名配置,避免签完之后出问题;第二步,根据用户选择的签名类型,从证书池调度对应可用的证书,如果是超级签名,就等用户访问下载链接的时候自动获取UDID,系统自动选择还有剩余名额的证书,添加UDID之后生成新的描述文件;第三步就是对IPA包做重签,移除原来的签名信息,用新的证书和描述文件重新签名,签名完成之后生成新的下载链接,用户就可以分发安装了。如果是掉签补签,流程会更快,系统会自动识别掉签的应用,直接换可用证书重签,一般十分钟以内就能完成,当然我也遇到过特殊情况,去年年初行业里被苹果批量吊销证书,那段时间备用证书都用上了还是有点缺口,最长一次给用户补签等了三个小时,那之后我又扩充了二十张备用证书,就再也没出现过这种情况。

接下来给大家说一下大家最关心的,超级签名和企业签名的真实稳定性对比,还有不同渠道的价格,我做这么多年,心里其实非常清楚。先说说企业签名的情况,企业签名用的是299美元一年的苹果企业开发者账号,不需要绑定UDID,签完之后任何设备都能安装,理论上不限制设备数量。价格分两种,一种是共享企业签名,就是很多不同客户的应用都签在同一张企业证书上,这种价格非常便宜,一般一个IPA包一个月只要50到150块,但是稳定性极差,我见过最夸张的一个星期掉三次,因为混签的应用里难免有违规应用,牵一发而动全身,只要有一个应用被举报,整个证书就会被吊销,所有应用全掉。另一种是独占企业签名,就是一张证书只放一个客户的应用,不混签,价格一般一个月300到800块不等,稳定性比共享签好很多,但是企业证书现在是苹果重点严查的对象,只要应用量稍大,或者有点敏感内容,很容易被吊销,我自己三张独占企业证书,去年一年就被吊销了一次,还是因为客户的应用被同行举报,整个证书上的应用全掉,补签花了一整天,客户那段时间正常运营都受影响。

然后是超级签名,超级签名一般按下载量收费,不同渠道价格差的也挺多,小工作室用非正规证书做的超级签,一般一个下载2到3块,而正规做证书池、用正规个人开发者账号的,一般一个下载3到5块,我给客户做的是4块钱一个下载,掉签免费补,不额外收费。说到稳定性,我这么多年的经验是,超级签名的稳定性远高于企业签名,因为超级签名用的是个人开发者账号,苹果对个人账号的审核宽松很多,而且单账号最多100个设备,风险完全分散,一张证书出问题,最多影响不到一百个用户,其他用户完全不受影响。我手里百分之八十的客户都是用超级签名,有一个做企业内部办公的客户,200多台设备,用我的超级签名快三年了,总共就掉过一次,还是去年那次行业批量吊销证书,补完之后用到现在都没出过问题,员工每天打开办公,完全不影响。还有一个做本地商家服务的客户,H5封装的应用,申请官方上架三次都被拒,因为是定制化的内部服务,不符合App Store的上架规则,后来转我的超级签名,现在快2000个用户,用了一年半,只出过一次问题,还是客户自己更新应用的时候改了包ID导致掉签,重新签完就好了,到现在都稳定运行。当然我也不是说超级签名从来不会掉签,掉签的情况肯定有,比如苹果清理开发者账号,或者证书被举报,但是概率非常低,一年也就一两次小规模掉签,而且只要有成熟的证书池,补签非常快,对用户的影响很小。

除了超级签名和企业签名,现在还有TF签名和官方上架两种方式,我也给大家说一下,官方上架就是上线App Store,肯定是最稳定的,只要不违规被下架,所有用户都能下载安装,但是官方上架的审核非常严格,很多内测应用、企业定制应用、H5封装的应用都不符合上架要求,根本过不了审。TF签名是依托苹果TestFlight的内测签名,是苹果官方认可的内测方式,稳定性几乎不会掉签,价格一般一个安装5到8块,但是TF签名有一万个测试员的名额限制,而且审核也比超级签名严很多,很多应用过不了TF审核,所以大部分客户还是会选择超级签名。

这么多年做下来,我最大的感受就是,苹果签名想要稳定,核心就是正规证书加合理的证书池机制,不贪便宜用黑号,不把量集中在少数证书上,大部分时候都能稳定运行,就算出点小问题,快速补签也不会影响用户使用。对于没法官方上架的应用来说,现在超级签名确实是性价比最高的选择,更新方便,稳定性够高,价格也不贵,只要大家找正规的服务方,避开低价陷进,基本不会有大问题。