我做独立iOS开发快三年了,去年捣鼓出了一款同城商家优惠整合的小工具,本来想直接走AppStore上架,折腾了三个多月被拒三次,最后不得不转而走签名分发的路子,这一年多踩过的坑,比我写三年代码遇到的bug还多。
最开始接触苹果签名,连P12证书是什么都搞不懂。那时候听人说买个P12就能自己签名,我兴冲冲去闲鱼收了一个个人开发的P12,回来按照教程往Mac钥匙串里导入,导了整整一晚上,打包的时候一直报签名验证错误。后来才搞懂,P12证书是把苹果签发的证书和对应的私钥打包在一起的文件,少了私钥的P12根本没用,那个卖家给我的只有公钥,私钥没导出来给我,我花五十块买了个废文件。
后来找懂行的朋友教我,才学会怎么正确使用P12。生成证书的时候要在本地生成请求文件,上传苹果开发者后台拿到证书,再从本地钥匙串里导出,把证书和私钥一起导出成P12格式,还要设置密码,保存好多个备份。要是私钥丢了,哪怕你有证书文件,这个证书也用不了。我之前存P12的U盘坏过一次,云端备份没做好,那个证书绑定的五十多个用户全部掉签,我花了整整三天重新生成证书、补签、一个个通知用户重新安装,那段时间天天熬到凌晨,想死的心都有。
做这行久了,市面上各个渠道的签名价格我摸的门清,给大家说点真实行情,别被坑。最常见的共享企业IPA签名,就是很多个APP共用一个企业证书的那种,现在市场价一般是三十到六十块钱一个月,听起来确实便宜,我一开始图便宜就买过三十块一个月的,结果你猜怎么着?安装完第二天下午就掉签了,用户打开APP直接变灰图标,提示无法验证应用,我去找卖家补签,卖家说排队要等二十四小时,等补完装好,第三天又掉了。半个月掉了八次,我天天给用户发新安装包,一半用户都跑了,真的是贪小便宜吃大亏。
然后是独立企业签名,就是一个证书只签你一个APP,价格现在大概是三百到六百一个月,比共享的贵不少,但是稳定性真的好太多。我用了三个多月独立企业签,只掉过一次,还是去年年底苹果严查证书的时候,掉了之后找服务商,当天就补好了,不用等很久。
接下来是超级签名,也就是按设备数收费的UDID签名,现在的行情是一块到三块钱一个设备,买一百个就是一百到三百块,安装之后只要证书不吊销,设备不删,就能一直用。适合小范围测试,或者用户不多的时候用,但是一定要找靠谱的服务商,我之前遇到过不良商家,卖了我一百个设备名额,不到半个月删了我七十多个UDID给别的客户用,我的APP直接全掉了,找过去人家把我拉黑了,钱也打了水漂。
最后就是TF签名,也就是TestFlight签名,属于苹果官方的测试分发渠道,现在市场价一般是两百到六百块钱包一年,大部分都不限下载次数,只要不超过苹果给的一千个测试设备上限就行。我现在大部分用户都导去TF签名了,用了快八个月,就掉过一次,还是我自己改了安装包的包名才掉的,找服务商补签,半小时就弄好了,从来没出过幺蛾子,稳定性真的吊打其他签名,对我们小开发者来说太香了。
很多刚入行的朋友问我设备签名的原理是什么,其实说穿了也很简单。苹果的iOS是闭源系统,所有能安装运行的APP都必须经过苹果签名,没有签名的APP根本装不上。设备签名其实就是我们常说的超级签名,核心就是UDID绑定。苹果给个人开发者账号开放了Ad Hoc测试权限,每个个人开发者账号最多可以绑定一百台测试设备,只有绑定了UDID的设备,才能安装用这个证书签名的APP。服务商就是把几百上千个个人开发者账号的一百个设备名额拼在一起,按个数卖给我们,你每加一个用户,就把这个用户设备的UDID绑定到其中一个开发者账号的设备列表里,再用对应的P12证书给IPA重签,用户就能安装了,原理就是这么回事。
说到UDID绑定,我也踩过不少坑。最开始我不懂怎么做自动获取,还让用户自己去Safari里查UDID,查完截图发给我,我手动登录开发者后台添加,手动重签打包,再发下载链接给用户。那时候一天新增十几个用户,我就要花一两个小时处理,完全没时间做功能更新。后来我找人帮我做了一个H5封装的下载页,自带自动获取UDID的功能,用户点安装按钮,会自动跳转到苹果的描述文件页面获取UDID,获取完自动回调到我的签名后台,后台自动添加UDID、自动重签生成下载链接,用户全程不用手动操作,直接就能安装,省了我不知道多少精力。现在很多做H5封装的工具都带这个功能,不光能把网页打包成APP,做签名分发的下载页也特别好用。
说起来IPA签名,其实就是对我们已经编译打包好的IPA安装包做重签名,替换掉原来的证书和描述文件,改成能分发的证书信息。最早我自己用Xcode命令行签名,经常出各种错,什么权限不对、证书不匹配,折腾半天弄不好,现在有很多在线IPA签名工具,上传IPA,选好证书上传描述文件,几分钟就能签好,直接下载就能用,对新手太友好了。
关于苹果的证书分发机制,我也梳理过很多次,其实就是三大类。第一类就是AppStore上架分发,这个是苹果官方最稳定的分发方式,审核过了之后所有用户都能直接下载,不会掉签,但是门槛真的太高了,需要企业主体,需要各种资质,审核还特别严,我那个小工具前后三次被拒,第一次要我提供所有商家的授权,我一个整合优惠的小工具,哪来那么多授权?第二次说我功能太简单,和网页版没有区别,不符合上架要求,第三次又说我隐私政策不规范,来回折腾三个多月,最后实在耗不动,放弃了。很多个人开发者做的小众工具、测试应用,其实都没办法满足AppStore的上架要求,所以才会走第三方签名的路子。
第二类就是企业开发者证书分发,也就是我们常说的企业签,苹果给企业开发者开放了内部测试分发的权限,签出来的APP不需要绑定UDID,任何设备都能安装,不需要上架AppStore,但是苹果会不定期检测证书,要是一个证书签了太多APP,或者签了违规APP,就会被苹果吊销,也就是我们说的掉签,掉签之后所有用这个证书签的APP都打不开,需要重新补签。
第三类就是Ad Hoc和TF分发,Ad Hoc就是我们说的UDID绑定签名,超级签名就是走的这个路子,TF分发是苹果官方的Beta测试分发,本质也是走苹果官方的渠道,所以才会这么稳定,基本不会被吊销,掉签概率特别低。
说到掉签补签,我真的一肚子苦水。去年双十二那段时间苹果查证书查的特别严,那时候我还在用独立企业签,那天早上我刚起床,打开微信就看到十几条未读消息,全是用户说APP打不开,我一看,果然证书被吊销了。赶紧找服务商,服务商说那天一下子掉了四十多个证书,技术都在加班补,我硬生生等了六个小时才补好,那六个小时我不停给用户解释,说很快就能好,结果还是跑了快三分之一的活跃用户,心疼了我好几天。从那之后我就下定决心,把所有能导的用户都导去TF签名,虽然TF最多只能放一千个用户,但是胜在稳,不用天天提心吊胆等补签。
我现在P12证书都做了双备份,本地存在电脑加密文件夹里,云端同步存了一份,密码记在好几个地方,就怕丢。之前还有朋友找我借P12证书用,说只是签个测试包,我没敢借,之前就听说有人借证书给别人,结果对方拿去签违规APP,苹果直接把证书吊销,自己的正规APP也全掉签,损失了几千个用户,这个坑说什么我也不会踩。
我用下来最大的感受就是,稳比什么都重要。对于我们这种靠小工具吃饭的独立开发者来说,用户本来就是一点点攒起来的,天天掉签,用户体验差,留不住人,再便宜的签名也没用。找签名服务商也只找做了两三年的老商家,哪怕贵个几十块,也比那种收钱就拉黑的小作坊靠谱。
做独立开发本来就难,没办法上架AppStore,只能靠签名分发,踩坑踩多了,也慢慢摸出了门道,找对合适的签名,不用天天折腾掉签补签,能省出好多时间打磨产品,慢慢攒用户,日子总能慢慢好起来。