我做独立iOS开发快三年了,最早做了一款手机隐私清理的小工具,一开始满脑子想的就是上架AppStore,折腾了大半个月,改了四版,还是因为“涉及未经授权的系统功能”被打回。那时候刚出来做独立开发,没什么本钱,总不能就这么把项目烂在手里,只能转头研究苹果签名,从申请证书开始,踩了数不清的坑。
最开始连什么是P12证书都搞不懂,对着苹果开发者后台的界面研究了整整一天,才搞明白,P12其实就是把我们申请到的证书和对应的私钥打包导出的文件,不管做IPA签名还是分发都离不开它。我第一次导出P12的时候,嫌设密码麻烦,直接空密码导出,结果找了好几个签名工具都读不出来,签出来的IPA包用户点击安装一直提示“无法验证应用”,折腾到凌晨两点才发现是没设密码的问题。那时候才记住,P12证书使用的第一个规矩,就是导出必须设强密码,私钥绝对不能泄露。后来我还把P12借过给一个刚入行的朋友用,他拿去签了一款擦边的工具App,没三天我的证书就被苹果吊销,一百多个用户的App集体掉签,我整整熬了两天重新做证书重签包,还是流失了大半用户,这个教训到现在都记得。
说到这里就不得不提苹果的设备签名原理,其实最开始苹果做这个,就是给开发者内部测试用的。我们申请证书的时候,苹果就给你限定了可以绑定的设备数量,个人开发者账号一年688块,最多只能绑定100台设备,每一台设备都要先把UDID上传到苹果开发者后台,绑定到你的描述文件里,这个就是UDID绑定,只有绑定了UDID的设备,才能安装你用这个证书签好的包。最早我自己手动做AdHoc签名的时候,每来一个新用户,就要让用户把UDID发给我,我再手动登录后台添加,重新生成描述文件,重新给IPA签名,再传到我用H5封装的下载页,一天来十个用户我就能忙到晕,那时候还没找到自动签名的工具,硬生生手动更了半个月,手都点酸了。
后来接触了不同渠道的签名,才知道原来这里面价格水这么深,我给大家说一下我这些年接触到的真实价格,绝对不是网上乱标的那种。自己申请证书用个人开发者账号做,苹果官方年费就是688,没有别的额外成本,但是最多只能绑100台设备,只适合小范围内测,用户多了根本不够用。超级签名是用很多个个人账号拼出来的,自动做UDID绑定,不用手动操作,价格一般是按设备算,一个设备一年大概5到15块,量大会便宜点,要是量少的话单个设备可能更贵。企业签名就是用企业开发者账号的证书做的,不用绑UDID,所有设备都能装,价格差别就大了,那种小渠道几十块钱一年的,我试过,半个月掉四次签,补签还要加钱,最后商家直接跑路,根本找不到人。稳定的大渠道企业签,一个月大概150到300,包补签,掉签一般半小时内就能补好,按年买的话大概1500到2500一年,这个价格是现在的真实行情。然后就是TF签名,也就是TestFlight签名,这个是苹果官方的测试渠道,价格大概一个包200到500,最多能放一万台测试设备,有效期90天,到期可以续,价格也不贵。
说到证书分发机制,苹果其实分的很清楚,不同的证书对应不同的分发渠道。开发证书只能用来在你自己的测试机上调试,不能做分发,AdHoc分发证书就是用来做设备测试签名的,就是我们说的绑定UDID那种,企业分发证书是给企业做内部应用分发的,不用绑定UDID直接安装,App Store分发证书就是用来给上架AppStore的包签名的,我最早还把开发证书当成分发证书导出P12做IPA签名,折腾了一下午,用户就是装不上,最后才发现证书类型搞错了,这种低级坑,也就新手才会踩。
我那会被掉签搞怕了,真的,那段时间我微信一打开就是几十条未读消息,全是用户说“App打不开了”“又掉签了吗”,我本来就没赚几个钱,天天处理补签售后,比做开发还累,真的差点就放弃这个项目了。后来听同行说TF签名稳定,我就抱着试试的心态弄了一个,真的打开了新世界。TF签名是苹果官方认可的测试分发方式,只要你的包不违规,不被举报,基本不会掉签,我第一个TF包用了快一年,到现在都能正常安装,用户点一下链接就能跳转到TestFlight安装,也不用手动信任证书,比企业签方便太多了。唯一的限制就是一个包最多只能放一万台设备,用户多了多弄几个包就行,对于我这种几千用户的小开发者来说,完全够用。
掉签为什么这么烦人?其实说白了就是证书被苹果给吊销了,大部分情况都是你的证书和违规App共享了,别人签了赌博、色情这类违规应用,苹果查到之后会连坐封掉整个证书,不管你签的App规不规范,都跟着掉签。补签说白了就是重新换一个新的证书给你的IPA包重新签名,然后再让用户重新下载安装,掉一次签最少流失三分之一的用户,大家都嫌麻烦,没人愿意一次次重新装。
我现在也总结出来了,签名这东西,真的是稳定比什么都重要,贵几十块一百块,换来的是用户不流失,不用天天处理售后,怎么算都划算。我现在的分发方案就是,核心用户全部放TF,分流的用户用大渠道的稳定企业签,这么久了,掉签的次数一只手都数得过来,掉了也很快就能补好,用户投诉少了很多,口碑也慢慢做起来了。
我那个下载页还是早年用H5封装的,里面放了UDID获取入口,不同版本的下载链接,还有常见问题解答,用户打开就能自己解决问题,不用我一个个回复,成本也低,一年几十块的虚拟主机加域名就能搞定,非常适合我们这种小成本的独立开发者。我当时做这个H5封装的时候,就是为了省掉回复用户怎么找UDID的功夫,放了一个自动获取UDID的入口,用户点一下就能复制直接发给我,省了超多口舌。
其实我一直没放弃AppStore上架,每次更新版本都会改一改合规问题,改到现在已经第六版了,上次审核已经到了最后一步,还是因为一个小功能不符合要求被打回来了,我现在还在慢慢调。毕竟能上架AppStore才是一劳永逸的,用户直接搜索就能下载,也不会有掉签的问题,但是对于我们做工具类的独立开发者来说,审核真的太严了,很多功能就是过不去,只能先靠着签名分发攒用户,慢慢改到符合要求。
现在我每次申请新的证书,都会反复检查P12的导出设置,密码一定会设成强密码,存到好几个地方备份,绝对不会再随便借给别人,也绝对不会再贪便宜找那种几十块的低价签名,踩过的坑太多了,也就知道什么才是适合自己的。平时没事我就泡在开发者论坛里,看看苹果最新的签名规则,提前做好准备,省得出事了手忙脚乱。
这段时间攒了点用户,也有了点稳定收入,打算这次改完包再提交一次AppStore上架,希望这次能顺利通过吧。