我接触iOS签名机制快八年了,从最早的企业签名野蛮生长的时代摸到现在,看着这个行业起起落落,踩过的坑能装满一箩筐,也攒了不少实打实的经验,很多做开发、做内测或者需要把H5封装成APP的朋友,都经常来问我,什么样的签名好用不掉,今天我就结合自己的实际经历,从设备签名逻辑开始,把大家关心的问题都讲清楚。
先从最核心的设备签名逻辑说起,我们今天的核心就是苹果签名证书设备UDID绑定,整个iOS系统的应用运行逻辑,本质上就是苹果对应用合法性的校验,任何没有经过苹果官方授权签名的应用,都没法在iOS设备上安装运行,这是苹果闭源生态的基本规则。而我们说的UDID,就是每一台iOS设备独有的识别码,相当于设备的身份证,对于需要绑定设备的签名类型来说,只有把你设备的UDID提前加到苹果开发者账户的设备列表里,生成包含绑定信息的描述文件,再用对应的证书给IPA签名之后,这台设备才能正常安装打开应用,这个绑定过程就是签名能生效的核心。很多刚接触签名的朋友不知道这个逻辑,以为随便签一下就能装,装不上就说是签名的问题,其实很多时候是UDID获取错误或者没绑定成功,我最早做第一个H5封装项目的时候,就出过这个错:当时给用户手动录UDID,输错了最后一位,结果十几个用户都装不上,我折腾了整整一天才找到问题,后来做了自动获取UDID的工具,才再也没出过这种低级错误。
接下来讲证书分发原理,证书其实就是苹果给开发者发放的合法授权凭证,不同类型的开发者账户能申请不同类型的证书,对应不同的分发渠道。如果你符合上架要求,目标是给所有用户公开下载,那最优解当然是上AppStore:用生产证书签名IPA之后提交苹果审核,审核通过后苹果会重新签名上架,用户直接从AppStore下载就能用,这是官方分发,稳定性拉满,也不需要用户做任何额外设置。但现实是很多应用根本没法上架AppStore,比如还在开发阶段的内测应用、H5封装的本地服务类应用、不符合苹果审核规则的工具类应用等等,这些应用就需要走侧签名分发,也就是我们常说的企业签名、超级签名、TF签名这三类。不管哪一类,核心都是先完成IPA签名,再通过链接或者二维码分发,H5封装出来的应用本来就是本地部署或者小范围使用,大多走这个路线,我这些年做过的三十多个H5封装项目,九成以上都用的侧分发签名。
然后聊聊很多人都不太在意的Apple ID风控,这个其实是现在很多签名不稳定的核心原因。不管是个人开发者做超级签名,还是公司开发者做企业签名,所有证书都绑定对应的Apple ID开发者账户,苹果对账户的行为风控越来越严格,很多违规操作都会直接触发风控,封证书封账户,所有签过的应用直接掉签。我之前认识一个做签名渠道的朋友,早年贪便宜收了一堆来路不明的黑ID,就是盗来的或者违规过的Apple ID,用来做超级签名,为了赚更多钱,一个账户不到一周就加满100个UDID,马上再加下一个,结果不到半个月,二十多个账户全被苹果封了,几千个用户全掉签,最后赔了不少钱还把口碑做砸了。我自己也踩过风控的坑:五年前我接了一个四百多人的内测单,那时候刚做超级签名,不懂风控规则,为了省事把两百多个UDID一次性加到一个新申请的Apple ID里,结果第二天苹果直接给我把账户封了,两百多个用户全掉签,我只好免费重新给大家签名,还赔了客户五百块钱补偿金,从那以后我就摸清楚了苹果风控的大致规则:短时间内频繁添加删除UDID、一个账户批量签名多个不同开发商的不同IPA、账户共享频繁换IP登录、签名的应用包含违规内容被举报,都会触发风控,所以现在我做签名,每个个人开发者账户最多放90个UDID,留10个空位,慢慢添加,从来不批量操作,这么多年下来,被封的账户屈指可数,稳定性高了很多。
接下来聊聊大家最关心的独享证书与共享证书的区别,其实不管是企业签名还是超级签名,都分独享和共享,价格和稳定性差得不是一点半点。共享证书就是很多个不同客户、不同IPA共用同一个证书签名,成本大家分摊,所以价格特别便宜,我见过最低的共享企业签,一个月才几十块钱,一年也才两三百,但是稳定性真的差到离谱。为什么?只要其中任意一个共享证书的IPA违规,被苹果查到封了证书,所有用这个证书签名的应用全部掉签,相当于你被别人连累了。我那个最早的H5封装项目,一开始就是贪便宜找了共享企业签,结果三天掉了两次,客户的五十多个会员全来找我,说应用打不开,我每天啥也不干就光重新发链接,折腾了一周实在扛不住了,换成了独享证书,才稳住。独享证书顾名思义,就是这个证书只给你一个应用用,不会给其他客户的应用签名,所以只要你自己的应用不违规,基本不会被封,价格确实比共享贵很多,现在独享企业签一年大概两千到三千,比共享贵了快十倍,但是一年下来基本不用管,省了太多心。超级签名也是一样,共享超级签名一个UDID一年才几毛钱到一块钱,独享的大概三块到五块一个UDID一年,稳定性差得也很多,共享的掉签率能达到三成以上,独享的不到百分之二。
最后说说我这两年做的稳定性实测和价格感受,我专门拿同一个我自己封装的H5本地服务IPA,分别在五个不同渠道做了五种不同的签名,找了一百个测试用户安装,连续测了三个月,统计出来的结果很能说明问题:第一种共享企业签,三个月下来八十七个用户掉签,稳定性才13%,也就是说十个里面八个半都掉了,这种真的只适合自己做一两天测试用,正式给用户用绝对不能碰;第二种共享超级签名,三个月掉了三十一个,稳定性69%,比共享企业签好不少,但是掉签率还是太高;第三种独享企业签名,三个月只掉了一个,还是我自己误删了证书,不是苹果封的,稳定性99%,我那个本地商家客户用了两年多都没出过大问题;第四种独享超级签名,三个月掉了两个,都是因为账户不小心触发了风控,调整UDID分发规则之后就没再掉,稳定性98%;第五种TF签名,也就是TestFlight官方内测签名,三个月下来一个掉签的都没有,稳定性100%,毕竟是苹果官方认可的分发渠道,根本不会随便掉签,只有90天的有效期限制,到期了重新续签一下就好,操作也很简单,不会影响用户使用。
说到价格感受,其实很多人一开始都选便宜的,算小账不算大账,我那个H5项目,一开始共享签一个月才八十块钱,看起来便宜,但是掉一次签,用户流失十个八个,损失的远远比签名费多,后来换成独享企业签一年三千块,平均下来一个月才两百多,两年多没出问题,算下来反而划算很多。TF签名现在一般一千多到两千多一年,包含三次续签,对于一两百个用户的小应用或者内测来说,性价比真的很高,比独享企业签便宜还更稳。我也试过不同渠道的同类型签名,价格差个两三百其实差别不大,最怕的就是小渠道收了钱跑路,掉签了找不到人补,找做的久的大渠道,哪怕贵个两三百,也比小渠道靠谱太多。
这么多年玩下来我最大的感受就是,做苹果签名,稳永远比便宜重要,苹果的签名机制核心就是UDID绑定和授权验证,找对渠道选对适合自己的签名类型,能省好多麻烦,能上AppStore就优先上架,上不了就选TF签名,实在不符合TF要求再选独享证书,贪便宜选共享证书,最后掉签掉得怀疑人生,用户流失完了才后悔,吃亏的还是自己。现在签名行业越来越规范,只要不碰违规内容,选对正规的独享证书或者TF,稳定用个一两年完全不是问题。