我做独立iOS开发快三年了,最开始做第一款本地工具类App的时候,一门心思只想冲AppStore上架。结果改了三版,因为功能擦边,加上带了无网本地导出的权限,连续三次审核被打回,那时候兜里没几个钱,找不起上架服务商做包优化,只能转而做签名私下分发,这一折腾,就算是把苹果签名的坑踩了个遍。
最开始不懂什么P12证书,听淘宝卖家说买个个人P12就能自己签名,一百块钱包一年,我想都没想就付了钱。拿到P12文件的时候才傻了眼,不知道怎么用,对着教程折腾了三个小时,才弄明白要导入到Mac的钥匙串访问里,还要对应匹配对应的描述文件,少一步都不行。那时候卖家给的P12其实是已经被撤销过的旧证书,我导入进去签出来的IPA,不管怎么弄都安装失败,提示证书不被信任,找卖家理论,对方半天回一句是我操作不对,最后直接拉黑了我。后来自己摸清楚,P12其实就是把证书和私钥打包导出的格式,正规能用的P12,一定是对应着有效开发者账号下的证书,导出的时候一定要记好密码,换电脑或者备份的时候,没有密码根本导不进去。我后来自己申请开发者账号,导出P12的时候特意存了好几个备份,存在云盘和U盘里,就怕再遇到之前电脑硬盘损坏丢证书的事。而且P12绝对不能随便外流,带私钥的文件,别人拿到就能用你的证书签任何App,真出了问题,苹果直接封你的开发者账号,哭都没地方哭。
说到苹果签名证书防篡改机制,其实核心逻辑就在这里。苹果要求所有安装进iOS系统的App都必须有合法签名,签名的时候会把整个IPA包的哈希值写进签名信息里,你哪怕改了App里一个图标,动了一行代码,哈希值对不上,安装的时候系统校验直接不通过,要么装不上,要么打开就闪退,根本绕不开。这也是为什么很多人想二次篡改别人签好的IPA加广告,最后都失败的原因,防篡改机制卡死了这个漏洞,别想随便钻空子。
接下来就得说设备签名原理和UDID绑定,这一块我刚入门的时候完全搞不懂,绕了快半个月才理清楚。其实我们常用的Ad Hoc分发,本质就是UDID绑定设备签名。苹果给个人开发者账号开放了Ad Hoc测试权限,一个账号最多可以添加100台测试设备的UDID,每一台要安装你App的设备,都必须把UDID加到开发者后台的设备列表里,打包生成描述文件的时候,会把这些允许的UDID写进去,安装的时候系统会校验当前设备的UDID在不在允许列表里,在就能装,不在就装不上。现在常见的超级签名,其实就是给这个过程做了自动化,用户点安装的时候自动获取UDID,自动调用接口加到账号池里,自动生成描述文件签名,全程不用人工操作,听起来很美好,坑也不少。
不同渠道的真实价格,我也摸得门清,给新手说句实话,市面上价格乱的很,我给大家说我这三年接触到的真实行情,别被人坑了。共享企业签名,就是一堆App共用一个企业证书的那种,便宜的99块钱一个月,稍微稳一点的199一个月,千万别信那种几十块钱一年的,基本都是骗子,收了钱就跑路。独立企业签名,就是一个证书只给你一个App用,稳定很多,价格一般是1200到1800一个月,包年的话大概一万块左右,小开发者真的肉疼,没变现之前很难承担这个费用。超级签名是按设备收费,走量的大渠道大概3块钱一个设备,给散户的小渠道一般是5到8块一个设备,包掉签补的会贵一块多,不包补的就便宜点,很多人贪便宜选不包补的,掉一次就血亏。TF签名,就是TestFlight官方签名,现在一般包上架包过的价格是400到600块,稳定用90天,到期只要重新发个包就行,如果你自己会操作上架,其实只需要花开发者账号的年费,不用额外给别人钱,找别人做就是赚个服务费和包过的保障。P12证书如果是自己账号导出的不用钱,买别人现成的,个人开发P12一年大概80到150块,企业P12不会单独卖,都是跟着签名服务走,别想着单独买了自己签,没描述文件一样用不了。
我之前图便宜用过99块一个月的共享企业签名,那掉签掉的我怀疑人生。那时候我刚做活动拉了一波新用户,两百多个人刚装上,结果当天晚上证书就掉了,所有用户点开App都是黑屏闪退,群里一下子炸了锅,几十条私信甩过来,我连夜找卖家补签,卖家说证书被苹果封了,要换证书得额外加100块换证书费。那时候我App还没开始变现,一分钱没赚,还要倒贴钱补签,当时气得我直接把鼠标扔地上了,差点砸坏电脑。补完签还要重新给所有用户发新的安装链接,用户还要重新下载安装,之前存在本地的数据全都没了,好多用户直接骂我骗子,退群走了,那段时间我天天蹲在群里给人道歉,说尽了好话,掉一次签流失三分之一的用户真不是夸张。掉签这种事,其实大多都是证书的问题,共享证书那么多App一起用,只要有一个App违规被举报,苹果一封证书,所有App全掉,补都补不及。有的渠道说包补签,其实补一次要等一两个小时,用户哪有那个耐心等,本来就是冲着工具来的,等久了直接换别家,根本留不住。
后来我试过超级签名,按设备算钱,我那时候三百个用户,花了快两千块,结果用了不到一个月,渠道用的开发者账号都是黑卡开的,苹果一封号,所有绑定的UDID全废了,又全部掉签,找渠道补签,对方说账号池没了,补不了,只能退我剩下的一半钱,我又损失了一堆用户,那时候真的想过要不要放弃iOS开发,转做安卓算了,太折腾了。
那段时间折腾完,我才开始静下心找稳定好用的方案,最后试了TF签名,才算是安稳下来。TF签名本质就是把你的IPA签名后上架到苹果官方的TestFlight测试平台,是苹果官方认可的分发方式,完全符合苹果的规则,所以基本不会掉签,只要你的App不违规被下架,用户不删除,就能一直用。我现在的主App就是做的TF签名,半年多了,只掉过一次,还是我自己更新版本的时候误操作把TestFlight的构建版本删了,重新上传之后就好了,根本没遇到过苹果封证书掉签的事,别提多省心了。我上个月帮朋友做线下门店的展示App,就是把做好的H5封装成IPA,然后做了TF签名,整个过程花了五百多块,现在用了三个多月,一点问题都没有,朋友特别满意,说比之前找别人做的企业签稳定太多了。说到H5封装,其实就是给适配好的移动网页套个原生壳,打包成IPA格式,之后还是要做IPA签名才能分发安装,很多小商家不需要上AppStore,做个H5封装再签名就能用,成本很低,比做原生App便宜太多了,适合小范围推广使用。
IPA签名其实就是个替换签名的过程,很多时候你开发打包出来的IPA用的是测试证书,要发布给用户用,就得把原来的测试签名擦掉,用你自己的有效P12证书和描述文件重新签一遍,现在网上有很多本地工具和在线平台都能做,操作不难,就是要看平台给你用的证书稳不稳定,证书不好,再怎么操作都是白搭。
我研究了这么久,苹果的证书分发机制其实就四种主要的:第一种就是AppStore上架的正式分发,所有用户都能搜索下载,经过苹果严格审核,最稳定,流量也最多,但是审核严,很多功能擦边或者没资质的App过不了;第二种就是Ad Hoc分发,也就是我们说的UDID绑定设备签名,超级签名就是用的这个机制,依赖个人开发者账号的设备名额,按设备收费,适合小体量的应用;第三种就是企业内部分发,也就是我们说的企业签名,用企业开发者账号的证书,不需要绑定UDID,任何设备都能装,下载安装方便,就是证书容易被苹果封禁,稳定性差;第四种就是TestFlight测试分发,也就是TF签名,属于苹果官方的测试分发渠道,审核比AppStore松很多,只要不是明显违规基本都能过,稳定性又比企业签超级签好太多,是现在很多无法上架AppStore的App的首选。
我现在其实还是一直在改我的App,每天调整功能,去掉违规的点,就是想早日过审上AppStore,毕竟签名分发再稳定,也不如正式上架省心,用户不用到处找安装链接,也不用担心掉签打不开,还能接苹果的支付,变现也方便。现在每天还是会处理一点签名的小问题,要么是新用户获取UDID出错,要么是更新版本重新签名,慢慢也摸出了规律,找靠谱的渠道,选适合自己用户量的签名方式,比什么都重要,贪便宜吃大亏这句话,在签名这一行真的是真理。刚入行踩过的那些坑,现在回头看,也不算白走,至少知道什么钱该花,什么便宜不能占,也能给后来的新手提个醒,少走点我走过的弯路。窗外的鸟叫得挺烦,我待会还要改版本提交审核,希望这次能一次过吧。