我做独立iOS开发快三年,大部分时间都是折腾小工具,去年给圈里跑团的朋友做了个本地模组记录工具,一开始满心欢喜想上架AppStore,结果连挂两次审核。
第一次说我支持用户自定义导入模组,属于用户生成内容,要求我完善内容审核机制和举报入口,第二次又说我未接入苹果IAP,不符合内购规范——我这工具三十多个人用,纯免费不赚钱,犯得上折腾那一堆资质和流程吗?索性放弃上架,转头开始研究苹果签名,这大半年踩的坑,比我写一年代码踩的都多。
一开始我连IPA签名是什么都搞不清,只知道没签名的IPA包导出了也装不到苹果手机上。最早想自己弄,买了一年的个人开发者账号,99美元折合下来七百多块,研究P12证书导出折腾了我一整个通宵。那时候才知道,P12证书不是随便导个文件就行,必须在钥匙串里先展开证书,选中对应的私钥再导出,我一开始只导出了公钥,折腾了八次签名全失败,后来对着教程一步一步走,才弄出能用的P12。这里也提醒一句,带私钥的P12绝对不能随便传给陌生人,我群里有个开发者借P12给朋友,结果对方拿去签违规App,没几天整个开发者账号被封,准备了一年的项目直接打水漂。
弄明白P12,才开始懂设备签名的原理。苹果本身不允许未授权的App安装,开发测试阶段,苹果给开发者开放了测试设备配额,只有把设备的UDID绑定加到开发者账号的授权列表里,再用对应的证书给IPA签名,系统验证通过才允许安装,这就是最基础的UDID绑定签名的逻辑。我一开始自己弄,三十多个人,一个个帮他们获取UDID,每个人都要发一遍教程,教他们装描述文件获取,折腾了整整两天,才把所有人的UDID加到账号里,自己签好包发出去,那时候觉得终于完事了,没想到这只是坑的开始。
后来用了不到一个月,我想再加几个新朋友进来,才发现个人开发者账号一年最多只能绑100个UDID,我已经用了三十多个,剩下的名额虽然够,但是换设备的话,旧设备移除了也要占名额的计数,用不了多久就会满。而且那段时间我也打听了不同渠道的签名价格,才知道原来市面上有这么多玩法,价格差的离谱。我整理了我问到的真实价格,给大家做个参考:自己弄个人开发者账号自签,一年七百多,最多100个设备,平均下来一个设备七八块一年;共享企业签名,便宜的九十九块一年,贵一点的一个月两三百,不用绑UDID,无限装机;独立企业签名,一个月五百到一千二,比共享稳定,但是一年下来也要大几千,独立开发者真扛不住;超级签名按设备收费,一般一个设备一年三块到六块,一百个设备也就三百到六百,比自己买账号便宜;TF签名大多是按包付费,稳定的年度付费TF一般八百到一千六一年,无限装机,不用绑UDID。
我一开始贪便宜,买了九十九块一年的共享企业签名,把自己的包重新签了发出去,不用绑UDID确实方便,没高兴一个星期,就开始有人找我,说App打不开了,提示未授权。哦,这就是掉签了。原来共享企业签是一堆开发者共用一个企业证书,只要其中有一个人签了违规App,被苹果查到封了证书,所有人签的包全都掉签,所有用户都要重新卸载再装新签的包。卖家说包补签,结果掉了之后找他,隔了一天才回,补完没三天又掉了,一个星期掉三次,我那三十多个朋友天天在群里@我,我本来免费做工具落个好,结果变成了天天给人擦屁股,那段时间真的想直接删库跑路,再也不做了。
走投无路的时候我还试过H5封装,把原生功能改成网页,套个壳打包成IPA,想着这样就算要签名也简单,而且不用每次更新都重新签。结果弄完体验差到离谱,我这个工具需要离线存储模组,跑团经常在郊外没信号,H5封装根本不支持离线大规模存储,打开卡就算了,没信号直接用不了,只能放弃,还是回来找靠谱的签名。
后来圈里一个做了十年开发的老大哥给我推荐付费TF签名,说你这么小的量,买个年度的TF不贵,稳定,省的心累。我那时候还不知道TF签名是什么,后来才弄明白苹果的证书分发机制,其实总共就是三类正规分发:第一类就是AppStore上架公发,面向所有用户,审核最严,也是最稳定的,但是门槛高,小工具很难过审;第二类是企业内部分发,苹果给299美元一年的企业开发者账号的权限,本来是给企业内部员工用的,现在很多人拿来对外签名,苹果查的严,很容易封证书掉签;第三类就是TestFlight测试分发,也就是我们说的TF签名,是苹果官方给开发者开放的测试分发渠道,本身就是合法的,所以稳定性比企业签高太多。
我找了个口碑还不错的付费TF签名服务商,付了八百多一年的费用,把我的IPA包给他们,一天就过了审核上了TF,给我一个邀请链接,我发到群里,大家点链接跳转到TestFlight,直接就能安装,连UDID都不用获取,比之前超级签名还要方便。我用了三个多月了,一次掉签都没有,之前天天睡醒先看群有没有人说App打不开,现在半年了都没再有这种情况。
很多人问TF签名为什么稳定,其实原理很简单,TF的安装包是存在苹果自己的服务器上,签名也是苹果官方验签,只要你的App不违规被下架,就不会掉签。就算真的因为什么原因掉了,正规的付费TF服务也会在24小时内帮你补签重新上线,用户只要重新点一次链接安装就行,不像企业签掉了要所有人重新卸载装,折腾一圈。而且TF签名本身的测试有效期是90天,正规服务商也会帮你提前续期,根本不用你自己操心。
我之前也用过超级签名,超级签名其实就是拼个人开发者账号的配额,按设备收费,虽然比企业签稳定,但是只要其中一个账号被苹果封了,绑定在这个账号上的所有设备就都会掉签,还是要补签,而且我遇到过黑心平台,用户重装App就算新设备重复收费,十个设备收我十五个的钱,坑的要死。
现在想想,我一开始就是贪便宜,觉得能省一点是一点,结果折腾了大半年,花的时间精力不算,还落了一身埋怨,不如一开始就找个稳定的付费TF签名,八百多块用一年,平摊到三十多个人身上,每个人一年才十几块,大家凑凑都出了,都觉得比天天掉签强。
我现在偶尔帮身边几个做小工具的独立开发者弄签名,大家都不想上架AppStore受那个约束,也都嫌企业签不稳定,最后选来选去还是选付费的TF签名,省心。做独立开发就是这样,很多人把精力都放在写代码做功能上,没想到这种外围的小事才最磨人,找对一个靠谱的服务,真的能省半年的心,不用天天盯着证书有没有掉,不用天天给用户解释为什么打不开,能安安心心更功能就够了。