我接触iOS签名机制快六年了,从最早帮身边创业朋友做内测应用签名,到现在帮不少中小开发团队做封装分发,踩过的坑攒起来能整理成一本经验册,最近两年用TF签名批量邀请做内测分发的场景越来越多,今天就把我这些年的实际使用经验整理出来,从底层逻辑到实际体验全说清楚,给刚接触iOS签名的朋友做个参考。

先从最基础的设备签名逻辑说起吧,iOS本身是闭源生态,苹果对所有安装到设备上的应用做了严格的权限管控,任何没有经过苹果认可签名的IPA包,都无法通过iOS内核的校验,根本没法安装打开。普通用户从AppStore下载的应用,其实都是经过苹果官方签名的,所以可以直接安装使用。但有大量应用是没法上架AppStore的,比如未上线的内测版本、行业定制类的内部应用、不符合AppStore审核规则的功能类应用,这时候就需要做第三方IPA签名,给未获得官方签名的应用包加上符合苹果校验规则的签名信息,让系统允许应用安装。我接触过最多的需求就是把H5封装成IPA,很多中小商家做自己的品牌商城或者内部工具,不想花几个月等AppStore审核,就会选择做H5封装,套一个原生壳之后做第三方签名安装,这种需求从四年前开始就一直没断过。目前主流的签名模式分两种,一种是企业证书签名,签完之后可以直接生成下载链接,用户扫码就能安装;另一种就是TF签名,基于苹果官方的TestFlight内测平台做分发,需要给用户发测试邀请才能安装,而TF签名批量邀请就是解决了传统TF邀请一个个添加测试员、一个个发链接的效率问题,可以一次性导入数百上千个设备信息,批量生成邀请链接,大大节省了分发的时间成本。

接下来聊聊证书分发原理,所有iOS签名的核心都是苹果开发者证书,苹果的开发者账号分为个人、公司、企业三种不同资质,不同资质的账号能申请的证书权限也不一样,证书分发的本质就是开发者用自己资质申请下来的证书,给用户的IPA包做签名,不同的分发模式对应不同的权限。企业开发者证书可以做企业内部分发,不需要把应用上传到苹果平台,签完就能直接分发,理论上不限制安装设备数量,这也是早些年企业签名火遍圈里的原因;而个人和公司开发者账号可以发布TestFlight内测,也就是我们说的TF签名,应用需要上传到苹果的TestFlight平台,经过苹果的二次校验之后才能分发,安装名额最多是一万个测试员,对于大部分中小团队来说完全够用,真的需要更多名额也可以分多个账号创建多个TF,用TF签名批量邀请分批次发送就行,操作起来也不麻烦。想要上架AppStore的应用,也需要先用对应证书签名才能上传,但是AppStore的审核规则越来越严,最近这两年我接触的客户里,差不多有一半的应用根本过不了审核,要么是内容涉及行业定制不符合规范,要么是功能简单被判定为套壳H5拒绝上线,所以大部分都转向了第三方签名分发。

聊完基础逻辑,不得不说大家最容易踩坑的Apple ID风控问题,我早年就因为不懂风控吃过大亏。前年有个客户做线下培训的内测App,要给两千多名学员发内测邀请,我那时候刚接触TF签名批量邀请,图便宜买了一批共享的Apple ID,一次性批量导入了上千个测试员,结果当天下午所有账号就被苹果风控封号了,已经发出去的邀请全部失效,学员第二天开营就要用,急得我当天晚上到处找靠谱的白号,重新整理设备信息重新做批量邀请,折腾到凌晨四点才弄好,最后还给客户免了一半的费用才摆平这件事。从那之后我专门花了一个多月研究苹果的Apple ID风控规则,总结出来几个核心点:第一,苹果现在对异常操作的管控非常严,短时间内批量登录、批量添加测试员、频繁切换IP登录,都会直接触发风控,轻一点限制功能,严重一点直接封号,甚至会取消开发者资质;第二,绝对不要用共享Apple ID,很多渠道卖的共享ID,几十个人共用,不知道别人用这个ID做了什么违规操作,一旦出问题所有使用者都会被牵连;第三,一个Apple ID添加的测试员数量最好控制在20个以内,最多不要超过50个,批量操作的时候要分批次导入,间隔几个小时操作一批,模拟人工操作的频率,就能大大降低触发风控的概率;第四,一定要买正规渠道的干净白号,那种几块钱一个的低价ID很多都是盗来的黑号,用不了几天就会被原主人找回,根本没法长期用。

再说说大家问得最多的独享证书与共享证书的区别,其实这个问题我最有发言权,早年刚入行的时候图便宜一直用共享证书,踩了无数坑之后才转成主要用独享证书。共享证书就是一个开发者证书分给几百上千个客户共用,所有客户的应用都签在同一个证书下面,渠道申请一个299美元的企业开发者证书,平摊到每个应用身上成本只有几块钱,所以价格特别便宜,几十块钱就能用一个月。但风险也非常高,只要证书下面有一个应用违规被用户举报或者被苹果检测到,整个证书就会被苹果吊销,所有签在这个证书上的应用全部掉签,用户打开就闪退,所有用户都没法用。我之前遇到过一次,半夜十二点共享证书被吊销,一下子有七十多个客户找我,我熬了一整夜给所有应用重新签名重发下载链接,从那之后我就几乎不碰共享证书了,除非客户自己明确要求要最便宜的方案,我也会提前把掉签的风险说清楚。而独享证书就是整个证书只给一个客户或者少数几个合规应用用,证书上面的应用数量少,只要你的应用本身不违规,苹果几乎不会检测到异常,掉签的概率比共享证书低太多了,哪怕真的因为内容问题掉签,也只有你自己的应用受影响,不会牵连别人,稳定很多。哪怕是做TF签名,上传应用也需要证书签名,用共享证书打包上传的应用,很容易被苹果检测到异常拒审,用独享证书就很少出现这种问题。

接下来聊聊我做的半年稳定性实测,我专门把同一个H5封装好的IPA包,分别做成共享企业签名、独享企业签名、TF签名三种版本,各放了1000个活跃用户,连续三个月统计安装成功率和掉签概率。第一个月月底统计的时候,共享企业签名就掉了三次,每次掉签所有用户全部没法使用,最长一次我花了22小时才重新签好发出去,那段时间客户足足流失了30%的活跃用户,体验非常差;独享企业签名第一个月只掉了一次,还是因为客户的应用被恶意举报,才导致证书被吊销,如果是正常内容的应用,其实那次也不会出问题,安装成功率大概在92%左右,还是有小部分用户会遇到信任证书失败打不开的问题;而TF签名整整三个月,一次掉签都没有出现过,安装成功率达到了99%,只有一个用户因为手机内存不足安装失败,剩下的所有用户都能正常打开使用,而且用户安装不需要手动信任证书,点击邀请链接跳转到TestFlight就能安装,体验比企业签名好太多,用TF签名批量邀请一次性发出去一千个邀请,整个过程不到两个小时就做完了,比我之前一个个添加测试员节省了整整三天的时间。当然我也遇到过小问题,最开始用小平台的批量邀请工具的时候,导入UDID经常会出现识别错误的问题,十个里面差不多有一个出错,导致用户收不到邀请,后来换了做了五年的老平台工具,识别准确率直接提到了99%以上,就很少出问题了。

最后聊聊我对不同渠道价格的感受,这么多年下来,我只能说一分钱一分货这句话永远没错。最便宜的共享签名,几块钱一个月、几十块钱一年的都有,我之前试过9.9包年的共享IPA签名,三天就掉签,之后再找店家已经找不到人了,人家本来就是赚快钱的,根本不会管售后。正常的共享企业签名价格一般在30到100块钱一个月,适合三五个人自己做内部测试用,给外部用户用真的扛不住。独享企业签名的价格一般在300到1500块钱一个月,正规老渠道的稳定独享签名一般在800块钱左右一个月,比共享贵很多,但是掉签率低很多,我现在用的稳定独享证书,正常内容的应用三五个月都不会掉一次签,就算掉签渠道也会免费给重签,出了问题也有人处理,比小渠道靠谱太多。TF签名现在一般按名额收费,做TF签名批量邀请还会给批量优惠,我上个月做的一个1000个名额的项目,全套下来才不到500块钱,平均下来五毛钱一个名额,比独享企业签名划算太多,稳定性还要更好,毕竟是苹果官方背书,苹果不会随便吊销TF应用。H5封装的话,一般普通封装几十块钱,带功能定制的几百块钱,我现在给客户做H5封装之后,大多都会推荐做TF签名,性价比和稳定性都能满足需求。

玩了这么多年iOS签名,我最大的感受就是稳定性才是核心,再便宜的价格,用两天就掉签,用户用不了,其实反而更浪费钱。现在TF签名加上TF签名批量邀请,不管是做内测分发还是做正式应用的不上架分发,都是稳定性和性价比最高的选择,只要找正规渠道,做好Apple ID风控,不用便宜的共享证书,就能获得非常稳定的使用体验,这也是我这几年踩坑踩出来的最实用的经验。