作为一个研究iOS签名机制快六年的独立开发者,我从最早做个人小工具到现在做本地商户聚合应用,一直绕不开第三方签名这件事。最开始我和很多同行一样,想省钱要么自己签,要么找便宜的渠道,踩过无数坑之后,年初抱着试试的心态参与了苹果签名证书免费体验,才对目前市面上的各种签名服务有了更系统的实测总结,今天就把我这些年的经验整理出来,给同样需要做IPA签名分发的开发者做参考。
先从我最开始研究的设备签名逻辑说起吧,很多刚接触iOS分发的朋友不知道为什么我们自己打包的IPA没法直接装到用户手机上,本质上是iOS的闭源生态决定的,所有能在iOS上运行的应用,都必须经过苹果官方的授权签名,验证通过才能运行。设备签名的核心逻辑其实就是三步:第一步,我们先把需要安装应用的设备UDID(唯一设备识别码)录入苹果开发者后台,苹果生成对应的包含UDID信息的描述文件;第二步用对应的开发者证书给IPA包重新做签名加密,把描述文件打包进IPA包;第三步用户安装应用的时候,苹果会依次验证证书的有效性,以及描述文件中是否包含当前设备的UDID,两个验证都通过,应用才能正常打开运行,只要其中一个环节出问题,要么安装失败,要么打开就闪退,也就是我们常说的掉签。不管是企业签名还是个人签名,核心逻辑都绕不开这三步,区别只是证书类型和验证规则不一样而已。
讲完设备签名逻辑,再说说证书分发原理,我们现在能用到的证书分发渠道,主要分三类,一类是基于企业开发者证书的企业签名,一类是基于个人开发证书的超级签名,还有一类就是苹果官方的TF签名,对应TestFlight分发。不管哪一种,证书分发的本质都是开发者把生成好的证书和对应描述文件授权给签名服务商,服务商再根据开发者的需求给IPA包重新签名,再把签好的包分发出去。这里不得不提我们做H5封装应用的场景,很多中小团队做应用的时候,为了快速上线,都会选择把已经做好的H5网页封装成IPA包,这种包本身不需要太复杂的开发,但是也没法上架AppStore,所以必须做签名分发。我最早做的第一款应用就是H5封装的本地美食聚合页,那时候不懂分发,自己用个人开发者账号签,个人账号最多只能加100个UDID,用户到了100个之后就再也装不上了,没办法才找第三方做证书分发,才知道原来还有企业证书这种可以无限分发的选择。
接下来讲很多人都关心的Apple ID风控问题,这也是掉签的核心原因之一,我这些年踩过的最大的坑就是风控坑。苹果现在的风控机制比前几年严格太多了,不是说你随便注册一个Apple ID就能生成能用的证书,苹果会从多个维度检测你的账号风险:第一个是注册和登录环境,如果你的ID是批量在虚拟机、模拟器上注册的,同一个IP一天注册十几个ID,直接就会被标记为高风险,用不了几天就会被封;第二个是证书使用频率,如果同一个ID生成的证书,短时间内签了上百个不同的IPA包,也会触发风控,直接吊销证书;第三个就是内容风险,如果同一个证书下有任何一个应用涉及违规内容,比如赌博、色情、诈骗,苹果检测到之后会直接吊销整个证书,不管别的应用有没有问题。我前年就遇到过一次,找了一个9块9一个月的共享签名,用了三天,整个证书被吊销,我们当时已经有八百多用户,一夜之间全部打不开应用,我找服务商,服务商说证书被封了,要等新证书,等了三天才补出来,那段时间至少流失了三分之一的活跃用户,损失远远不止那9块9的签名费,后来我才知道,就是同证书下别的开发者签了违规应用,把整个证书带崩了,而苹果的风控现在是连坐机制,一个违规全部遭殃。
说到这里就不得不对比一下独享证书和共享证书,这两种证书我都用了好几年,太了解其中的区别了。共享证书就是多个开发者共用同一个证书,大家都把自己的IPA包签在这个证书上,服务商把成本分摊给多个用户,所以价格非常低,甚至很多服务商拿共享证书做苹果签名证书免费体验引流,吸引用户之后再收费。这种模式虽然便宜,但是缺点太明显了:第一就是刚才说的连坐风险,只要有一个用户违规,全证书掉签;第二就是共享证书一般签名的应用数量多,频率高,本身就很容易触发苹果风控,掉签概率非常高,我用过的所有共享签名,平均存活时间不超过两周,短的两三天就掉了。而独享证书就是一个证书只给一个开发者用,整个证书下面只有你自己的应用,不会有别的应用牵连,所以风险低很多,只要你自己的应用不违规,很少会触发风控,掉签概率比共享证书低太多,当然价格也会贵很多,一般共享签名一个月几十块,独享证书一个月几百块,看起来差很多,但是稳定性差的不是一点半点,我现在用的独享证书已经八个多月了,只掉过一次,还是我自己误操作把带敏感测试内容的包签上去了,不然到现在都没问题。
接下来我说说我三个月前做的稳定性实测,我当时找了三个不同渠道的服务,同时挂我们的应用,分别是低价共享签名、中价独享签名、TF签名,同时做稳定性测试,我们的应用是H5封装的本地商户聚合应用,本身内容合规,没有违规内容,测试下来的结果是:第一个低价共享签名,第五天就掉签了,原因是同证书的另一个违规应用被苹果检测,整个证书被吊销,补签之后,第十二天又掉了,三个月总共掉了12次,平均一周掉一次,每次补签少则几小时多则一两天,用户体验非常差;第二个就是我现在用的独享签名,三个月测试期里只掉了一次,就是我刚才说的误操作,重新补签只用了20分钟,对用户影响很小;第三个是TF签名,TF签名本质是把应用上架到苹果官方的TestFlight做测试分发,是官方认可的分发方式,所以只要审核过了,确实不会掉签,我这个TF版本用了三个月都没问题,但是问题也很明显,第一是审核,TF的审核虽然比AppStore松一点,但是我们H5封装的应用第一次审核就因为套壳问题被拒了,找了服务商调整内容之后第二次才过,花了一周时间,第二是TF每个版本最多只能有10000个测试设备,我们当时用户已经快八千了,再过两个月就要重新发新版本,重新走审核,而且用户下载需要跳转到TestFlight,还要经过苹果官方的下载步骤,比直接下载安装IPA的体验差很多,很多用户嫌麻烦就放弃了。至于AppStore,我们当然想正规上架,前后提交了四次,找了两次代上架,都因为我们应用里的商户外链跳转和分销功能不符合苹果的审核规则被拒,苹果要求所有内链必须用系统跳转,不能跳外部网页,我们做聚合平台根本做不到,所以只能放弃上架AppStore,走第三方签名的路子。
聊完稳定性,说说不同渠道的价格感受,我这些年用过从免费到几千块的各种签名,最便宜的就是苹果签名证书免费体验,一般都是服务商拿共享签名给你体验一周,让你试试安装流程,我体验过两次,一次第三天就掉了,一次撑到第六天体验期结束也掉了,免费的确实能让你体验流程,但是别指望稳定,毕竟服务商也要成本,不可能给你免费的独享证书用。然后是共享签名,价格从9块9到100块一个月不等,看起来非常便宜,但是算掉签带来的用户损失,其实成本比独享高太多,我之前算过,我用共享签名的时候,每个月因为掉签流失的用户,换算成获客成本至少要几千块,远远超过独享签名几百块的成本;然后是独享签名,价格一般是300到800一个月,根据证书类型和服务商不同有差异,一年下来几千块,对于有一定用户量的开发者来说完全可以接受,换来的是几个月不掉签的稳定,性价比其实很高;然后是TF签名,一般是按次收费,过审一次收300到1000块,过不了不收或者收少部分,如果你能过审,成本其实不高,但是如果像我们这样多次过不了,累积下来成本也不低,而且用户超过一万就要重新上架,比较麻烦;AppStore上架的话,每年的开发者账号费才688,代上架也就几千块,但是过不了审一切白搭,所以对于我们这种没法过审的应用来说,稳定的独享IPA签名是目前最优的选择。
我现在用的这个就是当初试了苹果签名证书免费体验之后选的,体验的时候服务商给我开了三天的独享小额度体验,我用了三天没问题才正式付费,用到现在八个多月,稳定性远超我之前用的所有共享签名,中间遇到过一次安装问题,是我自己打包IPA的时候版本号错了,客服远程帮我排查了十几分钟就找到问题,重新签名就好了。对于我们这种靠应用吃饭的小团队来说,稳定比什么都重要,便宜的签名看起来省钱,掉一次签损失的用户和口碑,多少钱都补不回来,选签名还是要选稳定性有保障的,不能只看价格。