做iOS独立开发快四年,前两年大半精力都耗在了证书授权这件破事上,踩过的坑能凑满一整个记事本,这次刚把自己用的TF签名内部测试设备管理后台功能做完发布,索性把攒了好几年的实用经验全抖出来,全是真金白银换出来的教训。
先从最基础的P12证书保管说起,这玩意有多重要? 我刚入行第一年就栽过一次大跟头。 那时候不懂,把生成的生产P12证书和密码随便存在开发电脑的桌面上,也没备份,结果某天电脑硬盘突然坏了,找了数据恢复也没救回来。 那时候我已经绑了八十多台测试设备,所有安装授权全废了,只能重新生成证书,重新打包,一个个通知用户重新下载,那半个月流失了快三分之一的种子用户,心疼到好几天没睡好。
后来我慢慢磨出了自己的保管规则,到现在再也没出过问题。 P12证书就是你App授权的身份证,绝对不能乱放。 我现在的习惯是,开发证书和生产证书分开,加密压缩之后存三个地方:加密云盘一份、本地加密移动硬盘一份、离线U盘一份,密码绝不和证书文件放在同一个位置,更不会随便把P12发给第三方签名服务商。 之前图省事把P12发给过一个小服务商签名,结果过了三个月,我的开发者账号突然被苹果警告,说我的证书签了十几个未授权的App,再犯就要封账号,查了半天就是那个服务商偷偷拿我的证书给别的开发者用,差点把我用了好几年的账号搞没,从那之后我再也不把P12给外人碰。
接下来聊证书分发方式,市面上常见的分发模式我全用过,挨个说体验。 最早我用的是企业签名,共享证书最便宜的八十块一个月,独立证书三百多,我刚起步的时候选了八十的,结果不到二十天就掉签,所有用户App直接变灰图标,打不开也删不掉,用户炸了我也炸了。 后来换了三百多的独立企业证书,稳定了三个多月,还是掉了,服务商说苹果查企业证书,他们也没办法,只能补发,补发要等三个小时,那三个小时我手机不离手,回了几百条用户消息,道歉道到嘴瓢。
后来转用超级签名,按下载量收费,最早一块多一个下载,后来降到三四毛,看起来不贵,其实本质就是拼个人开发者证书的量,哪个证书被苹果封了,绑这个证书的所有设备全掉。 我之前做拉新活动,一天来了两百多个新用户,第三天全掉签,服务商说三个绑定的个人账号被封了,只能重新签,又花了我小一百,用户体验差到极点,一半新用户直接走了。
再后来才摸到TF签名,也就是苹果官方的TestFlight内测,这才算是找到靠谱的路子。 这次我做自己的设备管理后台,也是围绕TF来做的,毕竟苹果官方给的授权,比第三方野路子稳太多。 之前我一直以为TF只能内部团队用,后来才知道开放外部测试之后,最多可以放一万个测试设备,完全够中小独立开发者用了。
UDID绑定这个细节,我必须好好说说,这是很多新人最容易忽略的坑,也是最影响用户体验的环节。 最早我用个人开发者账号绑设备,一个账号最多一百台,那时候全手动操作:让用户自己去网页查UDID,把字符串发给我,我再登录苹果开发者后台一个个输,输完还要重新打包签名,整个流程下来少则半小时,多则大半天,用户等不及直接走了,十个用户有三个还会输错UDID,绑上去也装不了,来回折腾好几次,我那段时间天天忙着绑UDID,代码都写不了。
后来用第三方工具,还是有问题,很多工具不能自动获取UDID,还是要用户手动输,错了也不提示,名额满了也不会自动释放,我明明只有八十多个活跃用户,结果因为很多换手机的用户UDID没删,一百个名额早就满了,新用户根本加不进来,我还要定期去清理,麻烦到爆炸。 这次我做设备管理后台,第一个优化的就是这个环节,用户打开我做的H5下载页,点一下就能自动获取UDID,不用手动输,绑错了实时提示,不活跃三个月的设备自动释放名额,根本不用我手动管,省了太多事。
我之前帮朋友做H5封装IPA,他就是不信这个邪,非要让用户手动输UDID,结果一百个用户三十多个输错,装不了,最后全来找我售后,折腾了快一周才理顺,所以说做H5封装或者IPA授权,UDID绑定这步一定要做自动获取,这个细节真的决定了用户留不留。
再聊设备授权逻辑,很多开发者做了好久都没理清楚不同方式的区别,我给大家捋得明明白白,都是踩坑踩出来的。 IPA授权的核心就是苹果验证你的设备有没有安装权限,不同方式的权限逻辑天差地别:企业签名用的是企业级开发者证书,本来是给企业内部开发测试用的,你对外分发,苹果很容易查到,查到就封证书,所以天生不稳定;超级签名是蹭个人开发者的测试设备名额,批量对外分发,苹果查到也会封账号,还是不稳定;TF签名是苹果官方开放的内测授权,你提交IPA给苹果审,审过了苹果给你发官方授权,只要你不违规,根本不会掉签,这是目前最稳的授权逻辑。
如果你能过AppStore上架,那肯定优先走AppStore,毕竟全设备开放,用户也信任,但现在AppStore审核有多严大家都知道,我去年做的本地文件工具,三次被打回,说我功能涉及第三方文件读取不符合规范,就是不给过,这种时候TF就是最好的选择,TF的审核比AppStore松太多了,我那个App提交TF,一天就过审了,直接就能给用户安装。
说到这里,必须给大家讲讲我印象最深的一次证书失效紧急补发经历,现在想起来还头疼。 前年春节前一周,我做的那个影视工具,用的是某小服务商的企业签名,三百块一个月,服务商拍胸脯说半年不掉,结果大年二十八早上,我一醒就看到几百条未读消息,全说App打不开了,我赶紧查,证书被苹果封了。 我赶紧找服务商补发,结果服务商说技术都放假回家了,要大年初三才能上班,那时候我真的快哭了,大过年的,用户骂我骗钱,我到处找朋友借临时证书,找了整整一天,才找到一个做签名的朋友愿意帮忙,熬夜重新打包,重新做下载页,一个个给用户发链接,熬了两个通宵,才把大部分用户安抚下来,那一次直接流失了快两千用户,我大过年的都没好心情,从那之后我就下定决心,再也不碰第三方不靠谱的签名,一定要找稳定省心的方案。
再聊聊不同渠道的价格体验,给大家做个参考,我这么多年用下来,性价比高低一眼就能看出来。 共享企业签名:几十到一百多一个月,最便宜,但掉签频率半个月一次,只适合自己本地测试,绝对不能给用户用;独立企业签名:三百到八百一个月,一年下来几千块,还是会掉,掉了补发也要等,成本高体验差;超级签名:三到五毛一个下载,一千个新用户就是五百块,账号一封全掉,成本不低还不稳定;TF签名:一般年费一千多到两千多,给你一万个设备额度,平均下来一个月才一百多,比企业签名便宜太多,还稳,我自己申请开发者账号一年才688,加上自己做后台管理,成本更低。 如果你只是小范围测试,自己的个人开发者账号一年688,一百个设备额度,也完全够用。
重点聊聊我现在用的稳定省心方案,用了快一年,从来没出过错,真的太香了。 如果你是和我一样的独立开发者,App过不了AppStore上架,或者就是做内部测试,那这套方案直接抄作业就行:优先选TF签名,搭配自己的内部测试设备管理后台,全程自己掌控,不用依赖第三方,稳定又省心。
具体怎么操作? 首先自己申请苹果开发者账号,一年688,这个钱不能省,自己的账号自己说了算,不用怕别人动你的证书。 然后把你的IPA打包好,提交到TestFlight,TF审核一般一天左右就出结果,比AppStore宽松太多,大部分只要不违规都能过。 如果是H5封装的IPA,也一样提交,我自己封装过好几个,都顺利过审了。 然后用设备管理后台对接,用户打开H5下载页,自动获取UDID,后台自动生成TestFlight邀请链接,用户点一下就能跳转到TestFlight安装,全程不用你插手,自动管理设备名额,不活跃的自动释放,根本不用你手动清理。
这套方案我用了快一年,只重新提审过几次版本,从来没掉过签,更别说什么紧急补发,我现在出门旅游都不用怕出问题,用户安装成功率能到95%以上,比企业签名不到60%的重装成功率高太多,用户体验好,留存自然就高。 哪怕你之后要上AppStore,前期内测用这套方案也合适,先邀请用户测试改bug,没问题再提AppStore,流程顺得很。
其实做独立开发这么久,我最大的感悟就是,写代码是基本功,分发授权才是留得住用户的关键,你App做的再好,天天掉签,用户也会走。 踩了这么多坑,才总结出来,苹果官方的渠道永远是最稳的,自己管好自己的证书,自己掌控设备管理,比什么低价第三方签名靠谱一万倍。 这次把TF签名内部测试设备管理后台做好发布,就是希望能帮到更多和我一样的独立开发者,不用再踩我踩过的坑,安安心心写代码,不用天天给用户道歉补签名。