做独立iOS开发快五年了,前两年一门心思想把自己做的加密笔记工具上线AppStore。熬了三个大夜改隐私声明,砍了两个用户反馈很好但不合审核规则的功能,结果三次提交三次被拒,最后给了个永久拒绝的通知,说我包含未声明的功能,再也不让提交了。那段时间真的挺崩溃,花了大半年做的产品,总不能烂在自己电脑里吧,没办法只能转头研究iOS签名分发,这一路踩的坑,说出来能装满一垃圾桶。

最早碰签名的时候,连P12证书是什么都搞不清楚。那时候买了个人开发者账号,一年99刀,跟着网上的教程去开发者中心申请发布证书,导出的时候没选“包含私钥”,导出来的P12只有几十k,拿给签名工具用,签出来的IPA根本装不上,折腾了整整一下午,才搞明白P12证书是怎么回事。原来P12就是把苹果给你开发者身份授权打包成的文件,必须同时包含公钥和私钥才能用,少一样签名都是无效的。后来我自己管理证书,每次导出P12都要检查两遍大小,存完还要拿测试机装一遍试,就怕再出问题,之前丢过一次带完整私钥的P12,那个账号绑了八十多台UDID,全废了,害得我一个个通知用户重新安装,折腾了整整两天,现在我的P12都会存三份:本地电脑一份,加密云盘一份,密码管理器里存好证书密码,真的不敢再丢了。

接触的签名多了,也摸清楚了现在不同渠道的真实价格,说出来给刚入行的朋友做个参考,别像我一样被坑。首先是TF签名,一般商家帮你上架的话,普通合规的内测App,价格大概在150到300块一次,有效期一年,要是你自己有开发者账号,自己申请上架,只需要出每年99刀的账号钱,成本摊下来其实也不高。然后是超级签名,商家按设备收费的话,一般是3到8块钱一个安装设备,也有包一百台设备一年的,价格大概在80到150块,都是正常价,太便宜的肯定有坑。然后就是企业签名,分共享证书和独立证书两种,共享签名就是一堆开发者共用一个企业证书,价格便宜,一个月几十块到一百多块都有,就是稳定性极差,掉签是家常便饭;独立签名就是一个证书只给你一个App用,价格一般一个月300到600块,包年的话大概两千多到三千多,比按月买划算很多,稳定性也好太多,现在很多正规服务商都会送企业签名自动重签,掉签不用找客服,系统自动补,真的省超多事。

很多刚接触签名的朋友搞不懂设备签名原理,也不知道UDID绑定到底是干嘛的,我也是踩了坑才弄明白。其实超级签名用的就是苹果官方的Ad Hoc分发机制,原理就是把每一个要安装你App的设备,唯一识别码也就是UDID绑定到你的开发者账号的设备列表里,苹果允许一个个人开发者账号最多绑定100台设备,绑定之后,你用这个账号的P12证书给IPA签名,这个设备就能顺利安装你的App,只要你不把这个UDID从列表里删掉,设备就能一直用,这就是设备签名的核心逻辑。这种方式是苹果官方认可的,所以只要账号不被封,基本不会无缘无故掉签,稳定性比共享企业签名好太多。我刚开始做超级签名的时候,用户换手机,旧设备不用了,我就把旧的UDID移除,腾位置给新用户,刚好一百个名额循环用,对刚起步的小开发者来说太友好了。

要说最方便的还是做H5封装的分发页,我之前收集UDID的时候,让用户自己去设置里找UDID,十个用户有八个找不到,流失率特别高。后来才知道,做个简单的H5封装就能集成自动获取UDID的功能,用户点一下就能拿到,还能把不同签名版本的下载链接都放进去,用户想装哪个点哪个就行。我一开始不会做H5封装,找别人做花了三百多,后来才发现网上有好多开源的分发页模板,改改图标、文字和下载链接,十分钟就能弄好,成本几乎为零,现在我的分发页放在自己的服务器上,访问快也没有广告,用户体验好太多。

不管是什么签名,核心都是IPA签名,我打包出来的IPA安装包,本身是没有经过苹果授权的,未越狱的iOS设备根本不让装,任何分发方式都需要先给IPA做签名,把合法的证书信息写到安装包里,让系统验证通过才能安装。我刚学打包的时候,好几次把P12证书配错,签出来的IPA全是无效的,发出去用户装不上,我还以为是手机的问题,折腾了好久才找到问题出在哪,所以做IPA签名第一步,一定要确认P12证书有效、权限对应,不然做再多都是白费功夫。

说到证书分发机制,现在市面上主流的其实就是四种,都是绕着苹果的规则来的。第一种就是大家最熟悉的AppStore上架,苹果官方正式渠道,面向所有用户,审核最严,也最稳定,只要能上线就不用操心签名的事,还能获得苹果的流量,缺点就是门槛高,很多产品过不了审核,还要被抽走30%的收入,对小独立开发者不太友好。第二种就是企业签名分发,用的是苹果企业开发者账号的证书,本来苹果出这个是给企业做内部员工App分发用的,不需要上架AppStore就能直接安装,现在大家拿来做外部公开分发,优点是不限制安装设备数量,成本比按设备收费的签名低很多,适合用户量稍大的产品,缺点就是如果苹果查到证书违规使用,就会吊销证书,也就是大家说的掉签,所有装过这个证书签名的App都会打不开。第三种就是刚才说的Ad Hoc分发,也就是超级签名,绑定UDID,每个个人账号限100台设备,官方认可,稳定性不错,适合小体量的早期产品。第四种就是TF签名,也就是TestFlight签名,本质是把你的App上架到苹果官方的内测平台,用户从TestFlight下载安装,也是苹果官方认可的方式,审核比AppStore正式上架松太多,很多过不了正式上架的产品都能过TF,稳定性是所有签名里最高的,只要不违规,一年都不会掉,缺点就是一个TF最多只能有一万个测试名额,用户多了需要多个账号,价格也不贵,我那个工具刚被AppStore拒了之后,第一次就是做的TF签名,一次就过审了,当时真的差点哭出来,终于能让用户用上了。

说到掉签补签,我真的有一肚子苦水要说。刚起步没钱的时候,图便宜买了个30块钱一个月的共享企业签名,结果第三天早上起来,打开微信几十条消息,全是用户说App打不开了,原来证书掉了。我赶紧找商家补签,商家半天不回,过了七八个小时才给我补好,那一天我就掉了二十多个活跃用户,都是刚付费的,心疼死了。后来更夸张,一个星期掉了三次,补签商家还每次要收我20块补签费,一个月下来补签费比签名费还贵,最后商家直接跑路找不到了,我那段时间天天盯着微信,就怕用户说App打不开,觉都睡不好。有次半夜两点掉签,我硬生生醒过来刷客服消息,等到天亮都没回复,那种焦虑感,做过独立开发的应该都懂。

后来经朋友介绍换了现在用的独立企业签名,带企业签名自动重签,才终于解脱。这个是一个证书只签我这一个App,很少被苹果查,就算不小心掉了,系统自动检测到,几分钟之内就自动重新签好,用户只要重新打开我H5封装的下载页,就能直接安装新包,根本不需要我手动找客服,也不用额外收补签费,我该改代码改代码,该吃饭吃饭,完全不用操心掉签的事。用了快一年了,总共就掉过两次,都是十几分钟就好了,用户几乎都没察觉到中断,体验真的好太多。

很多刚做独立开发的朋友问我,选签名到底选哪种好,我都是说,看你的用户量,刚起步用户不到一万,直接做TF签名就好了,一百多块钱用一年,稳定得很,用户体验也最好,毕竟是官方渠道,不会有证书信任的问题。用户过了万,就换带自动重签的独立企业签名,成本可控,也稳定,比天天掉签补签强太多,真的不要图便宜买那种几十块的共享签名,看起来省了几百块,实际上跑了用户亏的更多。我之前帮一个做民宿管理工具的朋友弄签名,他不听劝,非要买最便宜的共享签名,结果刚给二十多个房东装完就掉签,房东都要上门找他算账,后来换了我用的自动重签独立签名,现在大半年都没出问题,见了我就说当初听我的就好了。

我那个加密笔记工具现在一千多付费用户,一直用着这个签名,也做了TF签名备用,H5分发页自己改的,用户付费直接走我自己的渠道,不用给苹果抽成,算下来比上线AppStore赚的还多,只要签名稳定,用户根本不在乎是不是从AppStore下载的,能用就行。做独立开发本来就难,好不容易做出来产品,别栽在签名这种事上,选对稳定的方式,才能安安心心做产品,陪自己的用户慢慢走下去。