我玩iOS签名机制快六年了,最早做独立开发的时候,就经常帮身边朋友做一些不能上架AppStore的小应用,从最开始的企业签名到后来的超级签名、TF签名,大大小小的坑踩了不下几十个,很多刚接触侧载分发的朋友来找我问得最多的就是:超级签名适合什么应用?到底稳不稳?今天我就从自己的实际经验出发,把设备签名逻辑、证书分发原理这些底层逻辑讲清楚,再聊聊我这些年遇到的风控坑、独享和共享证书的区别,给大家一个实打实的参考。

我最开始研究iOS签名的时候,最先搞懂的就是设备签名的核心逻辑。iOS系统天生封闭,所有安装到手机上的应用都必须经过苹果签名授权,不然根本打不开,而超级签名用的其实就是苹果官方给个人开发者开放的Ad Hoc分发权限。简单来说,每个个人开发者账号可以最多添加100台不同的iOS设备UDID,只要把设备UDID加到开发者后台,用对应的证书给IPA签名之后,这个应用就能在对应设备上永久安装使用,不需要越狱,也不需要经过AppStore审核。而超级签名和我们手动打包签名的区别就是,它做了自动化流程:用户点击下载链接的时候,签名系统会自动获取用户设备的UDID,自动提交到开发者后台添加,自动重新给IPA签名,最后给用户返回可以直接安装的链接,整个过程不到十秒,根本不需要用户手动操作,对普通用户来说特别友好,很多H5封装的应用做分发,都会选这种方式。

说完了设备签名逻辑,再说说证书分发的底层原理。不管是IPA签名还是其他类型的iOS签名,核心都是证书。苹果的开发者证书分开发证书和生产分发证书,用来做Ad Hoc分发的就是生产分发证书,一个开发者账号对应一组证书,证书的权限和账号绑定,苹果会实时校验证书的有效性。比如我们做H5封装,本质就是把做好的H5网页打包成标准的IPA安装包,接下来最重要的一步就是给IPA做签名,没有签名的IPA根本没法放到iOS手机上安装。如果要上架AppStore,那就是用苹果的App Store分发证书签名,上线之后用户从AppStore下载就行,但很多应用不符合AppStore的上架规则,比如功能单一的H5封装本地应用、企业内部办公工具、未上线的测试版本,这些根本过不了审,所以才会用超级签名、TF签名这类方式做分发。TF签名其实就是利用TestFlight的测试分发权限,本质也是苹果官方的分发,但它有不少限制,比如一个构建版本最多只能下载10000次,测试有效期只有90天,到期之后所有用户都得重新下载,更新应用还要重新提交苹果审核,对于用户量不大但需要频繁更新的应用来说,其实挺麻烦的。

说到Apple ID风控,这是我踩过最多的坑,没有之一。苹果这些年对开发者账号的风控越来越严,很多人不知道,不是随便弄个Apple ID就能做签名的。苹果的风控规则其实很明确:如果一个Apple ID对应的开发者账号短时间内频繁添加、删除UDID,批量生成证书,或者这个ID本身就是批量注册的黑号,没有真实的个人信息,甚至是共享给几百个人用的,就很容易触发风控,一旦触发,要么账号被封,要么证书失效,对应的所有签名应用都会掉签,用户手机上直接显示“无法验证应用”,根本打不开。我还记得四年前帮一个做社区团购的朋友做H5封装的团长端应用,当时朋友想控成本,找了个网上99块钱包年不限安装的超级签名,结果不到七天,对方所有的ID都被苹果封了,三百多个团长的应用全打不开,朋友那段时间正好搞618大促,直接损失了十几万的营业额,最后找我重新做了签名才救回来,从那之后我就再也不敢碰低价的黑号签名了。

这里就得说说大家经常问的独享证书和共享证书的区别,其实这个很好理解。共享证书就是很多商家把一个个人开发者账号的100个设备名额,拆分卖给几十个甚至上百个客户用,所有客户的应用都用同一个证书签名,共享那100个名额,所以价格能压得很低,甚至有几块钱一个月的。但共享证书的问题太多了:第一,很容易被牵连掉签,只要有一个客户的应用是违规的,被人举报到苹果,苹果一封证书,所有客户的应用全掉,你根本没地方说理;第二,名额很容易满,很多商家明明说给你留了位置,结果用了两个月告诉你名额满了,要你加钱扩容,一算下来加钱比买个独享还贵;第三,频繁添加删除UDID,很容易触发苹果风控,掉签是家常便饭。而独享证书就是一整个个人开发者账号的100个设备名额全归你一个人用,证书也只有你一个人的应用用,别人碰都碰不到,所以不会被其他客户牵连,只要你的应用本身不违规,不被举报,基本不会触发风控,稳定性差了不是一点半点,价格当然比共享贵,我现在用的独享证书,一年也就一千二百块钱,100个名额全是我的,算下来一个设备一年才十二块钱,其实比常年掉签折腾的共享签名划算多了。

去年我专门花了一个月的时间做了不同渠道签名的稳定性实测,我找了三个不同价位的渠道,分别是99元年付的共享超级签名、399元年付的半共享签名(就是一个证书分给三个客户用)、1200元年付的独享超级签名,我分别把我自己做的三个IPA放了上去:第一个是我自己用的内部开发测试工具,第二个是给本地连锁咖啡店做的H5封装会员应用,一共36个用户,第三个是一个创业朋友的项目内测版,40个内部测试用户。我每天记录安装成功率和掉签情况,一个月测下来结果差得离谱:第一个99元的共享签名,安装成功率只有62%,经常出现安装失败提示,一共掉签11次,平均不到三天掉一次,最后一周因为账号被封,直接全用不了了;第二个399元的半共享,安装成功率87%,一个月掉签2次,都是因为同证书的另一个客户违规被封牵连的,每次掉签都要等大半天才能重新签好,那段时间咖啡店的用户经常反馈付不了钱,搞得店主特别头疼;第三个1200元的独享,安装成功率100%,一个月只出现过一次验证问题,还是因为我自己改了应用的bundle ID重新上传导致的,正常使用的那三十多天里,从来没有出现过用户打不开的情况,36个咖啡店用户和40个内测用户,没有一个人反馈过问题。之后我又对比了TF签名和超级签名,TF签名我也测了,稳定性确实也不错,但是我那个创业朋友的内测项目不到两个月就用掉了近八千次下载,再新增测试用户就没法装了,而且90天有效期快到的时候还要重新打包提交审核,折腾了一周才弄好,而超级签名就没有这些问题,只要不超过100个设备,随便用,随时更新,根本不用等苹果审核,体验好太多了。

这些年跟不同渠道打交道,最大的感受就是签名这个行业真的是一分钱一分货,便宜没好货这话绝对没错。我最开始刚入行的时候,在二手交易平台找过9.9元无限安装的超级签名,结果第二天就打不开,商家都直接拉黑我跑路了;后来又试过按安装次数收费的,一块钱一次安装,看起来便宜,但是掉签了重新安装还要再给钱,算下来一年下来比买独享还贵,而且动不动就掉,用户体验差到极点;再后来试过按月付费的共享签名,29块钱一个月,每个月掉个三四次,每次掉了要等大半天商家才能重新签好,客户投诉不断,我那时候帮一个做企业内部工具的朋友维护,半个月接了二十多个投诉电话,最后实在受不了换成了独享,才终于安稳了。很多人一听说独享签名一千多一年就觉得贵,其实算下来,100个设备,平摊到每个设备一年才12块钱,一杯奶茶钱都不到,换一整年的稳定,真的不算贵,要是因为贪便宜用了低价共享,掉签一次损失的都不止这点钱。

其实从我这么多年的经验来看,超级签名最适合的就是用户量在100台设备以内,对稳定性要求高,又没法上架AppStore的应用,比如小公司的内部办公应用、创业项目的内测版本、本地商家定制的H5封装应用、个人开发者的测试工具,这些场景用超级签名真的太合适了,对比TF签名不用受下载次数和90天有效期的限制,对比企业签名稳定性更高,价格也更便宜,用户安装体验也更好。我自己现在做H5封装IPA分发,只要用户量不超过100,我都会推荐超级签名,只要选对独享证书的正规渠道,基本大半年都不会掉一次,用着特别省心。找签名的时候千万别贪便宜选那种低价共享,一定要选正规渠道的独享证书,不然掉签一次亏的真的不是一点半点,毕竟对任何需要分发的应用来说,稳定能用才是最核心的需求。