我做独立iOS开发快五年了,大半时间都在跟签名打交道。

刚写完第一个小工具那会,我连什么是签名都搞不懂,只想着赶紧给内测用户装上。折腾了两天才弄明白,不上AppStore的iOS应用,必须签名才能安装,那坑也就从那时候开始踩了。

先说说P12证书使用这点事,我一开始以为P12就是个普通的安装文件,拿到手不知道要导入钥匙串,对着压缩包看了半天不知道怎么弄。后来才搞懂,P12其实是把苹果颁发的证书和私钥打包在一起的文件,不管做什么类型的签名,都离不开合法的P12证书。

我踩的第一个坑就是拿到了带问题的P12,对方把已经吊销的证书打包给我,签完名根本装不上,折腾到半夜才发现不对。后来自己会申请证书了才知道,P12一定要保管好私钥,我曾经不小心删掉了钥匙串里的私钥,整个证书直接废掉,只能重新向苹果申请,白忙活一整天。从那之后我养成了习惯,自己的P12都会在云盘备份三份,从来不会随便外借,毕竟别人拿你的P12去签违规APP,整个证书都会被苹果封,到时候哭都没地方哭。如果是自己用企业账号做签名,生成P12的时候一定要记得勾选导出私钥,不然导出的文件根本用不了,这点新手一定要注意,我见过太多人栽在这个小细节上。

说点大家最关心的,现在不同渠道签名的真实价格,我接触这么多年,给大家报点实价,别被人坑了。

共享企业签名,就是很多不同的APP共用一个证书的那种,适合刚写完几个人内测用,一般价格就是20到100块钱一个月,真的很便宜,但是稳定性极差,这个我后面说掉签的事再吐槽。还有那种按次收的共享签名,签一次几十块,其实都是一样的货,别以为一次性付款就稳,该掉还是掉。

然后是独立企业签名,就是一个证书只放不到十个APP,都是正规内容的那种,价格一般是300到800块钱一个月,证书做了防封处理的会贵一点,稳定性比共享签名好太多,掉签频率低很多。

接下来是超级签名,用个人开发者账号绑定UDID的那种,一般是一个设备8到15块钱,终身用,只要账号不封就没事,适合一百个用户以内的小批量,用户多了成本就太高了,一千个用户就是上万块,根本扛不住。

然后是TF签名,这个我现在用的最多,一般帮你上架TestFlight,价格就是200到500块钱一次,有效期九十天,到期重新上架就行,正规服务商都是包过的,性价比很高,就算算下来一年也才一千多,比独立企业签名还便宜。

讲完价格,再说说设备签名原理,其实说穿了也不复杂。苹果规定所有装在iOS设备上的APP,都必须有合法的签名授权,不然系统根本不让你打开,甚至连安装都安装不了。设备签名的核心就是苹果给开发者的测试权限,允许开发者给指定设备分发未上架的APP,说白了就是提前把你的设备信息录入苹果开发者后台,签过名的APP就能在这个绑定过的设备上安装运行。

这里就绕不开UDID绑定,UDID就是每台iOS设备唯一的识别码,相当于设备的身份证,想要让设备能安装签名后的APP,就必须把这个UDID绑定到开发者账号的设备列表里。我刚做签名那会,还要一个个教用户怎么复制UDID,要打开Safari进网页,下载描述文件,然后从设置里查看复制,经常碰到用户复制错,少一位多一位,绑定完了装不上,又要重新弄,折腾半天。现在正规平台都有自动获取UDID的工具,用户点一下就能自动获取录入,省了好多事,但还是免不了偶尔出错,比如网络问题获取失败,所以如果碰到装不上,第一步就要检查UDID绑定是不是正确。

再说说苹果的证书分发机制,苹果现在主要的分发渠道其实就三种。第一种是AppStore上架分发,用的是上架用的发布证书,所有人都能下载安装,只要你能过审,这肯定是最稳定的,用户体验最好,但是审核规则太严,很多APP根本过不了。第二种是企业内部分发,用的是企业开发者账号的企业证书,本来是给企业内部员工分发内部办公APP用的,不限制设备数量,也不需要经过AppStore审核,所以很多开发者用来做对外分发,但是苹果明确不允许企业证书用来做对外公共分发,所以苹果会不定期扫描,查到违规就会吊销证书,也就是我们常说的掉签。第三种就是AdHoc测试分发,也就是绑定UDID的那种,最多支持一百个设备,超级签名和TF签名其实都是基于这个机制来做的,本质都是苹果官方允许的测试分发,所以稳定性要高很多。

说到掉签补签,我一肚子苦水,估计很多独立开发者都跟我有一样的经历。

最坑的一次就是刚做那个摄影调色预设工具那会,攒了快一千个用户,那时候贪便宜,找了一个个人接的签名,一年才一千二,平均一个月才一百,比平台便宜一半,还是同行介绍的,我就信了。结果春节前半个月,某天早上起来,微信炸了,几十个用户找我说APP打开提示“未受信任的企业开发者”,点不开,我一看,掉签了。赶紧找那个卖签名的,结果对方说他的企业账号被苹果封了,钱退不出来,他自己也亏了,意思就是这事就这样了,他也没办法。

那时候我真的欲哭无泪,春节啊,用户都放假,好多人趁着假期修图,就等着用我的预设,我到处找临时补签的,问了好几个,共享的不稳,不敢用,独立证书临时开要八百块,咬咬牙付了钱,还等了大半天才能排上队签好,前后让用户等了三天,好多老用户直接就说太麻烦不用了,本来不多的用户走了快三分之一,亏了钱不说,攒了大半年的用户基础没了,从那之后我再也不贪便宜找个人野路子,只找正规的有ios企业签名技术支持的服务商,贵就贵点,出问题有人管,掉了能及时补,比什么都强。

还有一次用共享签名给正式用户用,那个证书里有一个违规的博彩APP,被苹果扫到吊销了,整个证书所有APP都跟着掉,我的小工具也无辜躺枪,找服务商补签,补完不到三天又掉,半个月补了四次,用户都被折腾怕了,走了大半,从那之后我就知道,共享签名真的只适合几个人内测用,绝对不能给正式用户用,太坑了。

我用过这么多签名,说句真心话,稳定好用的还得是TF签名,毕竟是苹果官方的TestFlight渠道,根本不会存在莫名其妙掉签的问题,只要你的APP不违规被苹果下架TF,就能一直用,用户也不需要设置什么企业信任,直接在TestFlight里打开就能用,体验比企业签名好太多。我现在大部分稳定用户都导去TF签名了,那个调色工具用TF签名快一年了,从来没掉过,我也就偶尔到期重新上架一次,十分钟的事,根本不用天天操心。

当然TF也有缺点,就是一个TF项目最多只能放一万个测试设备,对我这种小独立开发者来说其实完全够用,真要是用户超过一万了,大不了多弄几个TF项目就行,成本也比独立企业签名低不了多少,稳才是最重要的。

要是用户真的很多,一万个名额不够用,那就选独立企业签名,找那种一个证书只放少量APP的,做了防封处理的,稳定性也不错,一般一个月最多掉个一两次,正规服务商都是免费补签,很多还做了掉签自动续签,掉了用户不用重新下载,打开APP自动就能恢复,也很省心。

我平时也接一点H5封装的活,很多本地商家或者小创业项目,不需要上架AppStore,就是给老客户内部用,我一般都是把H5封装成IPA包,然后做TF签名,交给客户就能用,又稳定又便宜,客户都很满意。说白了H5封装出来的IPA都是未签名的,必须做IPA签名才能安装,选什么签名直接决定了后续的使用体验,选对了基本不用管,选错了天天折腾补签,本来好好的项目都被折腾黄了。

其实我也一直尝试把能上架的APP都往AppStore上架,能上架肯定是最好的,用户直接在AppStore搜索下载,不用碰签名,也不会掉签,推广也方便,还能接苹果的支付分成,正规做的话肯定是首选。但是架不住苹果审核规则太严啊,很多小工具,或者带点特殊功能的APP,改个十次八次都过不了,要么说你内容违规,要么说你功能不符合要求,卡你几个月,最后还是被拒,对于我们小独立开发者来说,时间就是钱,总不能一直卡在审核上不做业务,所以签名就是这些不符合上架要求的APP唯一的出路。

做独立开发这么多年,我越来越觉得,签名这件事,真的是一分钱一分货,不要总想着找最便宜的,便宜的背后都是坑,要么掉签频繁,要么服务商跑路,出问题找不到人。找靠谱的渠道,有稳定的技术支持,出问题能及时解决,能安安心心改功能维护用户,比天天折腾补签掉签舒服太多了。现在我没事就跟圈里刚入行的新朋友说,签名别瞎找,多问问过来人,踩过一次坑就知道稳才是最重要的,毕竟我们做开发的,精力要放在做产品上,不是放在天天补签名上。