我接触iOS签名和应用分发快六年了,最早是帮开发团队做内测应用签名,后来身边不少做轻应用、定制工具的朋友找我帮忙踩坑,这六年来掉过的坑、见过的稳定方案数不胜数,今天就把我整理的全流程干货分享出来,从底层逻辑到实际实测,给想要做IPA签名分发的朋友做个参考。

首先得从设备签名逻辑说起,iOS系统的封闭性决定了所有能正常安装打开的应用,都必须带有苹果认可的合法签名,这也是苹果管控应用生态的核心手段,我们常说的IPA签名,就是给未上架AppStore的IPA安装包重新赋予合法签名的过程。而设备签名的核心逻辑,其实围绕UDID授权展开:早期的个人开发者设备签名,是需要把每一台要安装应用的设备UDID,提前添加到开发者账号的授权设备列表中,打包生成证书的时候,会把所有授权UDID写入证书凭证,用户安装应用的时候,iOS系统会校验当前设备的UDID是否在证书的授权列表里,验证通过才能正常打开应用,验证不通过就会提示无法验证或者直接闪退。一个个人开发者账号的授权设备上限是100台,所以这类签名只适合小范围的团队内测,做大批量分发根本不够用。我刚入行的时候不懂这个规则,帮二十个人的小团队做内测,贪便宜买了个人证书签名,结果加到第101台设备的时候怎么都装不上,折腾了半天才搞懂上限规则,最后换了企业证书才解决问题。

说完设备签名逻辑,再来说证书分发的整体原理,目前合法的分发渠道一共三类,第一类就是官方的AppStore分发,开发者把应用提交审核,审核通过后苹果统一签名,用户直接从AppStore下载安装,这种是最稳定的,但是门槛也最高,不仅需要交六百多的年费,审核规则极严,很多内测应用、定制工具、H5封装的轻应用都不符合上架要求,根本没法走这个渠道。第二类就是TestFlight也就是我们常说的TF签名,属于苹果官方开放给开发者的内测分发渠道,不需要过AppStore的正式审核,只要应用不违反核心规则就能上线,用户通过TestFlight客户端下载安装,签名由苹果官方提供,稳定性非常高。第三类就是我们常见的第三方企业证书签名分发,针对没法上架AppStore的应用,用苹果颁发给企业的企业开发者证书给IPA包重签名,然后通过H5分发页让用户直接下载安装,不需要跳转其他平台,适合大批量的用户安装。H5封装我这里也提一下,现在很多中小开发者做轻应用,不想做复杂的原生开发,直接把适配好的网页H5封装成IPA包,再做签名分发就能当成独立APP使用,这种模式非常灵活,成本也低,只是因为本身内容偏工具或者定制化,大多没法上架AppStore,所以基本都走第三方签名分发的路子。我前两年帮本地一个生鲜商家做H5封装的下单APP,因为只是给周边老客用,不需要上架,所以只做了签名分发,到现在用得好好的,当时也遇到过坑,一开始用了便宜的共享签,不到十天就掉了,害得商家那边好多老客打不开下单页,耽误了好几天生意,后来换成独享证书才彻底解决。

这几年苹果对签名分发的管控越来越严,核心就是Apple ID风控体系在不断升级,很多人掉签其实都是触发了苹果的风控规则。我研究下来,苹果的风控现在是基于机器学习的多维度检测,不会只看某一个指标,比如你的Apple ID绑定的开发者证书,短时间内大量新增应用、大量不同IP下载安装、签了多个违规应用,甚至同一个证书签了几十个不同开发者的包,都会触发风控。触发风控的结果就是证书直接被吊销,所有签过这个证书的应用全部掉签,严重的话整个开发者账号直接被封,根本没法解封。我之前有个客户,自己注册了个人开发者账号,为了省钱自己签,每隔两三天就改一次包重签,半个月不到就重签了二十多次,结果直接触发风控,账号被封,连交的年费都退不回来,非常可惜。还有一种情况更坑,就是共享证书上,只要有一个人签了违规应用,比如赌博、诈骗类的APP,被苹果查到之后,整个证书所有应用都会被牵连,哪怕你的应用是完全正规的,也会一起掉签,这也是共享签名不稳定的核心原因。

目前市面上的企业签名,主要就是共享证书和独享证书两种,我接触这么久,不同渠道的价格差异其实很大,感受也特别深。共享证书就是几十个甚至上百个开发者的应用共用同一个证书,按次收费或者按月收费,价格非常便宜,我见过最便宜的是5块钱签一次,包月也才二三十块钱,很多新手一开始都会被低价吸引,我早年也贪便宜用过,结果就是平均一周掉一次,有时候刚签完第二天就掉,不停给用户重签,折腾下来时间成本都比买正规证书贵,还得罪客户。而独享证书就是整个证书只给你一个人用,只签你自己的应用,不会给其他开发者共用,所以不存在被牵连的问题,价格自然也贵很多,我现在拿的正规独享企业证书,一个月大概三百多,一年下来三千多,比共享证书贵了几十倍,但是稳定性差了可不是一点半点。我也在不同渠道买过证书,淘宝的低价证书基本都是黑证书,要么是盗来的账号,要么是已经被风控标记过的,用不了几天就掉;第三方平台的共享签价格差不多几十块一个月,独享签一般两百到六百一个月不等,TF签名一般按名额算,一千个下载名额一百多,一万个名额八百多,我总结下来就是一分钱一分货,永远不要想着花几块钱买稳定,掉一次签损失的推广费、用户信任,都比你省的那点签名钱多得多。之前我认识一个做推广的朋友,做一款网赚工具,贪便宜找了9块9包月的共享签,投了三万多块钱信息流广告,刚跑三天证书就掉了,所有用户都打不开,直接亏了三万多推广费,后来找我做了独享签名,再重新投推广,已经没了最初的流量热度,效果差了好多,非常可惜。

为了验证不同签名方式的稳定性,我去年专门做了一百天的稳定性跟踪测试,把同一个正规的IPA包,分别做了共享企业签、独享企业签、TF签名,同时也提交了AppStore上架,同一个包同一个内容,测试环境相同,跟踪下来结果非常明显:AppStore上架成功后,一百天里完全稳定,没有任何问题,只要不违规下架就能一直用,缺点就是审核花了十二天,还因为一个小功能被打回两次,对于急于上线的来说太耽误时间,而且很多应用根本过不了审;TF签名的那个包,一百天里一次都没掉过,因为是苹果官方签名,根本不会轻易吊销,唯一的限制就是测试名额最多一万个,适合用户量不到一万的内测或者小范围分发,稳定性仅次于上架AppStore,我现在给大部分做小范围分发的客户都推荐这个方案,很少出问题;独享企业签名的那个包,一百天里只掉过一次,还是因为客户那边短时间导了一万多用户安装,触发了临时风控,重新生成证书签名之后,到现在快一年了都没掉过,稳定性非常好,适合用户量过万的大规模分发;而共享企业签名的那个包,第七天就掉签了,原因就是同一个证书上的一个违规棋牌APP被苹果查到,整个证书被吊销,所有应用一起掉,这个结果其实完全符合我之前的预期。

这么多年玩下来,苹果签名机制其实一直在变,苹果一直在收紧风控,但是只要摸透底层逻辑,选对适合自己的证书类型,不贪小便宜,就能拿到稳定的签名服务,不管是内测还是正式分发,都能满足需求。哪怕是H5封装的轻应用,只要内容正规,选对独享证书或者TF签名,稳定运行一两年完全不是问题,用户体验和上架AppStore的应用差别并不大,完全能满足日常分发的需求。