去年初拉着两个大学同学创业,做针对本地生鲜商家的进销存工具,一开始没敢直接冲击AppStore上架,功能每天都在迭代改bug,得先找一百多个种子商家内测,这就绕不开苹果签名的一堆事。
我最早是做H5页面起家的,本来想直接让用户在浏览器打开用,结果用了一周就发现问题,H5没有推送权限,改了价格商家收不到通知,而且微信里动不动就被判定诱导分享给封了,折腾两次之后下定决心,把H5封装成IPA包,做苹果内测。这就是我第一次接触IPA签名,什么都不懂,全靠踩坑摸路。
一开始我自己查教程走内测流程,其实说复杂也不复杂,梳理下来就是:先注册苹果开发者账号,把做好的未签名IPA包准备好,生成对应的证书和描述文件,用签名工具给IPA重签名,然后做下载分发页,让用户扫码安装。说起来简单,我第一次走完全程花了整整两天,光注册苹果开发者账号就卡了大半天,信用卡扣钱扣了三次才成功,现在想想都头疼。
最早头疼的不是签名,是设备管理。苹果这边安装非上架的内测app,装完之后得用户手动去设置-通用-VPN与设备管理里面,找到对应的开发者证书点信任,才能打开app。我第一批找了20个种子商家,有16个来找我问“为什么下载完点不开”,我那时候天天蹲在用户群里,一个个发截图教,教到后来我直接把步骤做成了带箭头的长图,放在下载页最顶部,才少了一半的提问。
还是有不少四十多岁的商家不会弄,有一次一个开生鲜店的大姐,找我语音聊了二十分钟,还是没找到设备管理入口,最后我让她开远程,一步一步点才弄好。那时候我就在想,有没有不用折腾设备管理的签名方式,后来就接触到了超级签名和TF签名。
先说说我用超级签名的感受吧。一开始服务商跟我说,超级签名不用用户信任,自动绑定设备,安装完直接就能开,我一听太香了,当场就付钱买了100个设备额度。刚开始用确实舒服,用户扫完码直接安装,打开就能用,再也没来找我问设备管理的问题,我舒服了小半个月。
结果半个月后的一个周一早上,我刚起床就看到用户群炸了,所有用户都说app打不开,我赶紧去问服务商,才知道给我做签名的那个个人苹果开发者账号被苹果封了,全掉签了。没办法,只能换个账号重新签,重新做分发链接,通知所有用户重新下载,当时八十多个用户,有二十多个直接说麻烦不用了,把我急得连着三天睡不好,就怕种子用户跑光。
那时候我就觉得超级签名虽然用着方便,但是稳定性太差,只要账号出问题,所有人都用不了,适合三五个人短时间测bug,长期内测真的扛不住。后来服务商给我推了TF签名,说这是苹果官方的内测渠道,稳定得多,我抱着试试的心态换了。
TF签名就是用TestFlight做内测,一开始我还嫌麻烦,说要让用户先下个TestFlight才能装我的app,会不会用户嫌麻烦走掉?实际用下来才发现,这点麻烦根本不算什么,反而省心太多。TestFlight是苹果官方的app,信任是自动的,根本不用用户去摸设备管理,也不会出现突然掉信任的问题,我换了TF签名之后,大半年了,就没出现过全量掉签打不开的情况,这稳定度真的甩超级签名好几条街。
当然TF也不是完美的,也有小问题,就是每次更包都要提交苹果审核,虽然比AppStore上架快得多,一般一两个小时就能过,但是赶上周末或者苹果审核抽风,就得等大半天,有时候我们紧急改了一个致命bug,就得等着审核过才能推给用户,这点确实不如超级签名灵活。但对于我们长期内测来说,稳定远比这点灵活重要,所以我现在一直用TF做主力内测,超级签名只用来给我们内部三五个开发测新包,用完就删,刚好互补。
用的时间久了,自然要自己管证书,这里就得说P12证书管理的坑,我真的踩过不少。一开始我自己弄苹果开发者账号,不懂规则,生成开发证书的时候,觉得反正生成免费,就没事就生成一个新的,结果不到一个月,我生成了六个P12证书,苹果直接把我最早的那个证书给废掉了,我所有签好的包全掉了,那时候我才知道,一个苹果开发者账号,最多只能同时存在两个开发证书,多了就会顶掉旧的,之前签的所有包都用不了。
还有一次,我把导出的P12证书存在了公共云盘里,想着方便同事下载,结果不知道怎么被爬虫爬走了,被好多人拿去用,不到半个月,我的证书就被苹果标记了,天天掉签,后来我赶紧撤掉所有证书,重新生成了一个,把P12存在本地加密硬盘里,设了复杂密码,才稳住。从那之后我就明白,P12证书是签名的核心,绝对不能泄露,也不能乱生成,没用的证书一定要及时在开发者后台 revoke 掉,占名额不说,还容易出风险。
踩了这么多坑,我也总结了好几个证书防掉签的技巧,都是真金白银试出来的,现在用着一直很稳定,几乎没出过问题。
第一个就是绝对不要贪便宜用共享证书,我最早试过九块九一个月的签名,说是不限设备,结果三天掉两次,后来才知道共享证书就是几百个人用同一个P12,签名量太大,苹果一检测就封,掉签是早晚的事,宁愿多花两倍的钱用独立证书,自己管自己的P12,稳定太多。
第二个就是不要超量加设备,不管是超级签名还是个人开发证书,苹果明文规定一个个人账号最多加100个测试设备,别信那些说能绕开限制的,你超量加了,苹果很快就能检测到,直接封号掉签,得不偿失,我现在一百多个内测用户,分两个账号放,每个账号五十多个,刚好,从来没出过问题。
第三个就是一定要留备用证书,我现在主用一个证书做签名,另外一个苹果开发者账号弄好备用证书放在那边,主证书万一出问题,直接用备用证书重签,分发链接都不用换,用户更新一下就能用,不会出现全量用户都用不了的情况,这个小技巧帮我躲过好几次危机,太省心了。
第四个就是P12证书一定要存好,不要随便发给陌生人,也不要放在公共平台,导出的时候一定要记得带上私钥,我之前就吃过这个亏,导出P12的时候没勾私钥,签名的时候一直提示证书无效,折腾了三个小时都没弄好,最后还是找苹果ios签名技术支持远程帮我看,才找到问题,从那之后我导出证书都要检查三遍。
还有一点,如果你内测完打算上架AppStore,那你内测的时候就要把包ID跟上架的统一,不要内测用一个,上架改一个,不然到时候所有签名都得重新弄,麻烦得很,我现在就是,内测一开始就用了公司苹果开发者账号的包ID,跟准备上架AppStore的一致,现在功能测的差不多了,直接导出IPA就能提交上架,省了好多事。
说实话,创业做小app,最怕的就是非产品的事消耗精力,一开始我天天跟签名掉签、设备管理这些破事较劲,每天一半的时间都在处理这些问题,根本没心思改产品找用户,现在摸对了路子,选对了签名方式,总结好了防掉签的技巧,基本上半个月都不用管签名的事,大部分时候都是安安稳稳的,用户安装顺利,很少出问题,我能把所有精力放在打磨产品上,这点对小团队来说真的太重要了。
前阵子我们做了一次小型推广,新增了六十多个种子商家,用TF签名直接加,整个过程不到一小时,所有用户都安装顺利,只有三四个商家不会下TestFlight,发个长图教程就搞定了,放在我刚做内测那会,这种规模的新增我得熬一天处理各种问题,现在半天就搞定了,真的是稳省心。
其实说白了,苹果签名这块,没有说哪个一定最好,只有适合自己的,我们小团队长期内测,要的就是稳定,少出问题,那TF签名就是最合适的,超级签名适合内部短测,自己管好了P12证书,做好防掉签的准备,就不会有那么多糟心事,毕竟我们出来创业,要把时间花在真正能帮用户解决问题的地方,而不是天天跟掉签较劲,折腾半天也没精力推进项目。这段踩坑走过来的经历,也给很多跟我一样刚开始做内测的小创业者提个醒,别贪便宜,找对方式,稳比什么都重要。