我是做iOS本地隐私工具的独立开发者,前前后后和苹果签名打交道快两年,踩过的坑能绕我的小出租屋三圈。最开始我一门心思想上AppStore,改了五版需求,调了三次隐私协议,还是因为工具属性的问题被拒了三次。苹果说我这类允许用户自定义存储内容的工具,没法保证内容合规,直接给了4.3准则拒审,再申诉也没用,没办法才转头研究各种苹果签名分发。
最开始连P12证书是什么都搞不懂,只听别人说签IPA要这个。去某宝搜,十几块钱买了一份现成的P12,商家说导入就能用,结果我导入电脑钥匙串,直接显示证书无效,私钥不匹配。找商家理论,人家说我操作不对,再发我一份还是不行,后来再找就已读不回了。后来才摸清楚,P12证书本质是把苹果开发者证书和对应的私钥加密打包在一起的文件,用的时候必须导入系统钥匙串,导出的时候必须同时打包私钥,少了私钥的P12就是一堆没用的废文件。很多不良商家就是拿过期的、被苹果吊销的证书重新改个信息,卖给新手赚快钱。
P12使用的时候一定要做好加密,这就是苹果签名数据加密最基础也最重要的一步。我现在所有的P12都存在本地加密移动硬盘里,从来不上公共云盘,导出的时候一定会设八位以上的强密码,之前吃过一次亏,把P12随便存在共享云盘,被爬虫爬走拿去给别的应用签名,一个证书挂了十几个应用,没几天就被苹果检测到吊销,连累我的应用也掉签,那一次真的亏大了。
说一下我摸出来不同渠道签名的真实价格,都是真金白银踩坑踩出来的。共享企业签名,就是很多个应用共用一个企业证书的那种,一般就是五十到一百块钱一个月,低于五十的基本都是骗钱的,用不了三天。独立企业签名,就是一个证书只给你一个应用用,价格大概三百到六百一个月,比共享的稳很多,但还是有掉签风险。超级签名,就是按设备算的那种,一般一个设备一块到三块钱,只有新增设备收费,已经绑定的不会二次收费,我最早用第三方的超级签名,是两块钱一个设备,现在自己用个人开发者账号搭,成本也就几毛钱一个。TF签名也就是TestFlight签名,官方的测试通道,一般价格是三百到一千二包一年,也有按安装量收费的,一个安装大概三五毛钱,比超级签名便宜点,稳得多。IPA签名本身就是整个流程的核心,你自己打包出来的未签名IPA安装包,必须用苹果认可的有效证书加上签名信息,苹果系统才会允许安装,没有签名的IPA哪怕你能导进手机,也会弹出未受信任的提示,根本打不开,很多新手刚打包完就卡在这里,折腾半天才知道要做签名这一步。
很多新手刚接触,肯定会问设备签名到底是什么原理?其实说穿了很简单,苹果本来就给开发者开放了Ad Hoc测试分发通道,允许开发者把测试应用安装到提前添加了设备信息的手机上,这个设备信息就是UDID,也就是苹果设备的唯一识别码。所谓的设备签名,就是用这个官方开放的通道,把应用签名后安装到绑定了UDID的设备上,现在常见的超级签名,就是把UDID绑定、签名、分发整个流程自动化了而已,不需要开发者手动操作,对小团队和独立开发者很友好。
UDID绑定是设备签名的核心,我最早不知道怎么获取UDID,还让用户自己在电脑上查,一个个发给我我手动加到开发者后台,麻烦死了,一天下来也就加十几个设备。后来才做了一个H5页面,嵌了自动获取UDID的脚本,用户点一下就能自动获取,自动绑定,整个过程不用用户动手,十来秒就能搞定。说到H5,我之前还做过网页版的工具,后来很多用户想要原生体验,不想打开浏览器用,我就用H5封装成了IPA包,也就是大家说的H5封装,封装的时候一定要注意把签名相关的配置改对,我第一次封装的时候留了封装平台默认的描述文件信息,签完名之后没两天就掉了,我还以为是证书的问题,折腾了三天才发现是封装的时候配置错了,留下了多余的签名信息,触发了苹果的检测机制。
说回证书分发机制,现在市面上主流的就是三种,对应三种不同的签名。第一种是企业证书的in-house分发,也就是大家常说的企业IPA签名,不用绑定UDID,任何设备都能装,下载完就能用,体验很好,但是苹果对企业证书管控很严,苹果发企业开发者证书本来是给企业做内部应用用的,不是给公开应用分发的,所以一旦检测到你用来分发公开应用,直接就吊销证书,也就是大家说的掉签。第二种就是Ad Hoc分发,对应超级签名,走的是苹果给个人开发者开放的测试通道,每个个人开发者账号最多绑定100台设备,只要你不拿一个账号签几十个应用,不超过绑定上限,苹果一般不会吊销,稳定性比共享企业签名好很多。第三种就是TestFlight分发,对应TF签名,这个是苹果官方认可的测试分发方式,不管你是什么开发者账号都能用,只要应用不违规,苹果基本不会封,是目前最稳定的分发方式,很多人说TF签名也会掉,其实大多是90天测试有效期到了,重新上传一次就好,用户只要点一下更新就行,和企业签名那种突然吊销、所有人都用不了的掉签完全不是一回事。
我掉签掉怕了,最早贪便宜买了9块9的共享企业签名,当时开心坏了,觉得捡了大便宜,结果第二天早上起来,打开应用直接闪退,二十多个已经安装的用户全来找我,说用不了。我去找商家补签,商家说共享证书掉签不补,要补得重新交钱,那时候我刚做应用,总共也就三十多个用户,一下掉了二十多个,差点直接放弃。后来补签的坑我也见多了,很多商家宣传永久免费补签,其实补签就是重新给你签一次名,所有用户都得重新下载安装,本来用户用的好好的,突然用不了还要重新装,一大半都会直接卸载,我最早那批种子用户就是这么掉完的,说起来都是泪。
后来经同行介绍,试了TF签名,才知道什么叫稳定。我那时候找第三方做TF上架签名,花了八百块钱包一年,到现在快十个月了,一次非到期的掉签都没有,只有到期的时候需要重新发一次包,用户更新一下就行,也不麻烦。我现在大部分用户都导到TF这边了,少部分还留在我自己搭的超级签名那边,用着也都没问题。我自己手里四个个人开发者账号,每个账号100个名额,都是自己申请的,P12自己保管,做好加密,一个账号只签二十多个设备,远远不到100的上限,也不会给别人用,所以根本不会触发苹果的检测,掉签概率极低。
之前还有人问我,为什么不接着申请上架AppStore,其实我也试过,后来又改了两版,加了AI内容审核,所有用户上传的内容都会先过审才能存,结果苹果还是说我这类工具风险太高,不给过。反正做这个工具本来就是满足一小部分用户的需求,我也不靠这个赚大钱,能稳定分发就够了,上架AppStore还要交30%的苹果税,还要应付各种审核,反而不自由。
现在很多新手开发者来问我签名选什么,我都会说,能做TF签名就选TF,稳是第一位的,不要贪便宜选那种几十块的共享企业签名,掉签掉得你怀疑人生。要是用户不多,也可以自己买几个个人开发者账号,自己搭超级签名,成本不高,自己管证书,做好P12加密,也很稳。不要随便把自己的P12证书发给第三方商家,很多商家会拿你的证书给别的应用签名,最后苹果吊销证书,吃亏的还是你自己。
我之前那个掉签的事,就是因为自己懒,把P12存在了第三方的签名平台,结果平台泄露了数据,被别人拿去用,最后证书被吊销,一百多个用户要重新补签,我熬了一整夜才弄完,一个个给用户发消息道歉,还好大部分老用户都理解我,但是那种愧疚感我到现在都记得,所以从那之后我再也不把核心证书数据交给第三方,所有加密都自己做,所有证书都自己管。
做独立开发本来就是一件很磨人的事,从写代码到打包签名,再到分发,每一步都有坑,踩多了也就会了。我现在每天打开后台看看证书状态,回一下用户的问题,没有掉签的打扰,日子过得挺安稳。比起天天盯着补签发通知,现在这样稳稳定定的,真的舒服太多了。偶尔遇到新的开发者问起签名的坑,我也都会把自己的经验说给他们听,少走点弯路,就能多留点时间做产品。