我玩iOS签名机制快八年了,从最早的企业签名刚兴起的时候就开始折腾,一开始帮创业圈的朋友签内测应用,后来自己做独立开发,大大小小的项目分发都离不开签名,踩过的坑没有一百也有八十,今天就把这些年的实用经验整理出来,从原理到实际使用,给需要的朋友做个参考。

首先说最基础的设备签名逻辑,很多刚接触的朋友都搞不懂为什么iOS需要签名,本质上是苹果的封闭生态决定的——任何能在iOS设备上运行的应用,都必须得到苹果的授权信任,否则系统内核会直接阻止应用启动。我们常说的IPA签名,就是给开发好或者封装好的IPA安装包,用符合苹果规则的证书和描述文件做重签名,给应用贴上合法的标签,让用户可以绕开AppStore直接安装。现在很多中小开发者喜欢做H5封装,就是把移动端网页封装成原生IPA包,不用开发原生应用就能快速上线,但是这种包大多不符合AppStore的审核要求,自然也就拿不到官方签名,所以必须做IPA签名才能分发安装,这也是现在签名需求越来越大的原因。设备签名的核心逻辑其实就是权限绑定:如果是需要绑定UDID的签名,会把用户设备的唯一识别码加到描述文件里,相当于给这台设备开了通行证;如果是企业签名,则是利用苹果给企业开发者的内部分发权限,不需要绑定单个设备UDID,任何设备都能安装,这也是企业签名这么受欢迎的核心原因。

接下来讲证书分发原理,很多人只知道用签名,不知道证书是怎么来的。所有可以用来签名的证书,都是从苹果开发者平台生成的,苹果给不同类型的开发者账号开放了不同类型的证书权限:个人开发者账号可以生成开发证书和用于上架AppStore的分发证书,企业开发者账号可以生成不限制UDID的企业分发证书,也就是我们用来做企业签名的核心证书。证书分发的原理说穿了就是非对称加密:苹果保存公钥,开发者手里持有证书对应的私钥,我们给IPA签名的时候,会用私钥给IPA的二进制文件、配置文件做加密签名,iOS设备启动应用的时候,会用苹果的公钥验证签名的合法性,验证通过就能正常运行,验证不通过就会提示“无法验证应用”,也就是我们常说的掉签。这里就不得不提官方的AppStore,所有上架AppStore的应用,都是开发者提交包之后,苹果统一用官方证书重签名,所以天生不会有掉签的问题,但是AppStore的审核门槛太高,不仅需要每年交99美元的会员费,审核周期长,规则还特别严,很多内测应用、内部办公应用、小范围分发的创业项目,根本没必要也没办法通过AppStore审核,所以才会用第三方签名的方式分发。

讲完基础原理,再说说大家最关心的Apple ID风控,这也是决定签名稳不稳定的核心因素。这些年苹果对签名的管控越来越严,风控机制也在不断升级,我最早2015年那会,一个企业证书能签几百个应用,用一两年都不会出事,现在不一样了,苹果会实时监测每个开发者账号的行为:短时间内生成过多证书、同一个IP登录大量不同账号、同一个证书签名大量应用、签名的应用涉及违规内容,都会触发风控,触发之后苹果会直接吊销证书,所有签过的应用全部掉签,严重的还会直接封禁开发者账号,彻底没法用。我早年踩过最大的坑就是不懂风控,2019年帮一个客户做H5封装的招商应用,图便宜找了个个人贩子的共享签名,结果上线第三天正好赶上苹果风控扫描,那个证书一天之内被吊销,当时客户正在开线下招商会,几十位经销商扫码下载全提示无法验证,客户当场就炸了,最后我赔了不少违约金才摆平这件事,从那之后我就彻底摸清楚了,风控不是小事,选证书一定要分清独享和共享。

说到独享证书和共享证书,这应该是大家选签名的时候最纠结的问题,我用这么多年的经验说句实在话,一分钱一分货在这个领域真的是真理。共享证书就是很多商家把同一个企业证书分给几十个甚至上百个开发者用,不管你是什么类型的应用都接,甚至违规的内容也往里签,这种证书因为成本摊薄了,所以价格特别便宜,我见过最便宜的9.9元一个月,二三十块就能包月,看起来性价比很高,实际上因为一个证书塞了太多应用,还经常有违规应用,早就踩中了苹果风控的红线,稍微一扫描就会被吊销,掉签掉到你怀疑人生。而独享证书就是一个证书只服务一个客户,或者只放少数几个合规的应用,不会乱接违规项目,从根源上降低了触发风控的概率,自然稳定性就高很多,唯一的缺点就是价格比共享高很多,一般正规平台的独享企业签名一个月在三百到六百元不等,看起来贵,实际上算下来比经常掉签的共享划算太多。

我去年专门做过三个月的稳定性实测,同一个我自己做的H5封装本地生活内测IPA包,分别放在三个不同渠道的证书上测试,结果差距真的特别大:第一个是某平台的共享证书,30元一个月,第一周掉签一次,第二周掉签两次,第三周直接证书被封,整个应用彻底打不开,联系商家也只给换了个共享证书,没两天又掉了,算下来一个月补了四次签名,花的钱都快赶上独享了,还折腾的不行。第二个是正规平台的独享证书,450元一个月,我同时放了三个自己的内测应用,全都是合规的项目,三个月测试下来只掉过一次签,还是因为苹果更新了风控规则,批量吊销了一批证书,有意思的是这个平台带自动签名更新功能,后台检测到掉签之后,不到十分钟就自动完成了重签,用户打开应用的时候自动完成了签名更新,根本不需要用户卸载重装,我也是后来看后台通知才知道掉过签,用户那边没有一个人反馈问题,这个体验真的颠覆了我之前对签名的认知。第三个测试的是TF签名,也就是TestFlight签名,本质是苹果官方的内测分发渠道,签名是苹果官方授权的,所以稳定性本来就很高,我这个包改了三次才过审,价格花了280元包上线,测试三个月确实一次都没掉过,但是TF签名也有缺点:首先就是有审核门槛,H5封装的应用如果涉及虚拟内容或者商业展示,很容易被拒,其次就是TestFlight的内测有效期只有三个月,到期之后需要重新提交打包,而且早期有10000次安装的限制,现在虽然放开了一些,但如果是大流量的项目还是有不少限制,适合小范围的内测使用。

最后说说我这么多年换了几十个渠道的价格感受,其实我最深刻的体会就是,签名这个东西,稳定才是最大的性价比。那些几块几十块的共享签名,看起来便宜,实际上掉一次签给你带来的损失,都够你交大半年的独享签名费用了,我之前遇到过很多朋友,贪图便宜用共享,结果项目做起来了,一夜之间所有用户都用不了,好不容易积累的用户直接流失大半,再想拉回来就难了。2021年苹果那波风控升级,我身边好几个用共享签名的朋友,整个平台几百个证书一起被封,商家直接跑路,用户全找不到地方解决,最后只能自己掏钱转独享,前前后后花了好几倍的钱才把项目救回来。

现在我自己的项目,还有帮朋友做的分发,都是用正规平台的独享证书加自动签名更新,小范围内测就用独享的TF签名,这么多年用下来,很少遇到掉签问题,就算掉了也有自动签名更新处理,根本不需要我操心,能把更多时间花在产品运营上,不用天天给用户解决打不开应用的问题。对比下来,上AppStore虽然稳定,但是对于还在测试阶段的项目或者内部应用来说,成本和门槛太高了,签名分发还是目前最高性价比的选择,只要选对了渠道,体验其实和官方安装差不了多少,用户点一个链接就能安装,不需要越狱,也不需要做复杂的设置,非常方便。

这么多年玩下来,我最大的感受就是,iOS签名这个行业,信息差其实很大,很多刚接触的朋友只看价格,不看稳定性和服务,最后踩了坑才知道后悔,其实只要搞懂基础原理,分清共享和独享的区别,选对带自动签名更新的正规渠道,签名的稳定性完全可以做到满足需求,不管是内测还是小范围分发,都能有不输AppStore的使用体验。