我做独立iOS开发快五年了,大大小小做了十几个工具类、内测类App,大半时间都在跟签名打交道。最早那会以为只有上架AppStore才能让用户安装App,踩了不知道多少坑,交了好几千的智商税,今天就把实打实的经验说出来。
什么是IPA签名?说白了,苹果的机制就是所有能安装在iOS设备上的App,必须有合法的苹果签名,不然系统直接拦着,连安装选项都不给你出。我第一次打包完IPA,对着未签名的安装包挠头半天,才搞明白签名到底是怎么回事。
P12证书,是我最早踩坑的地方。很多新手刚接触签名,都搞不懂P12到底是啥,怎么用。其实P12就是把你在苹果开发者后台申请的证书,加上私钥一起导出打包的文件,相当于你开发者身份的凭证,给IPA签名全靠它。我第一次跟着教程生成证书,导出P12的时候没记密码,换了电脑之后根本用不了,不得不重新删了证书重新申请,折腾了整整一天。
这么多年用P12的经验,总结下来就几个要点:第一,导出的时候一定要设强密码,千万不要不设密码就给别人,第二,一定要多备份,我现在P12存在本地加密硬盘、加密云盘、U盘三个地方,就怕丢,第三,非必要绝对不要把自己的P12随便给第三方签名服务商。我早年傻乎乎把自己个人账号的P12给了一个服务商,结果对方偷偷拿我的证书签了好几个违规App,没过半个月苹果直接把我的证书 revoke 了,我做了两个多月的内测包全掉签,三百多个测试用户全打不开,七百多一年的开发者账号也直接废了,那个亏吃到现在我都记得。
说到设备签名原理,其实说穿了也不复杂。每一台iOS设备都有一个独一无二的UDID,相当于设备的身份证,不管你怎么刷机升级,UDID都不会变。所谓的绑定UDID,就是把你用户的设备UDID,添加到你苹果开发者账号的可安装设备列表里,再用对应权限的证书和描述文件给IPA签名,苹果服务器验证的时候,查到这个设备UDID在许可列表里,就允许你安装。
不同的签名方式,原理不一样,价格也天差地别,我这么多年接触下来,给大家报报现在市面上的真实价格,免得大家被坑。个人开发者账号自己用,苹果官方定价是99美元一年,换算下来大概七百多人民币,适合自己做内测的小开发者。超级签名,就是用多个个人开发者账号做的Ad Hoc分发,现在市面上一般按设备收费,走量的渠道差不多一块到三块钱一个设备,坑人的会收十块八块,大家别买贵了。企业签名分两种,共享证书的就是很多人共用一个企业证书,一个月大概几十到一百多块,独立证书就是你一个人用一个企业证书,一个月大概三百到八百块,那种喊你收一两千一年说永不掉签的,基本都是割韭菜,我去年就花一千二买过所谓永久签名,不到半个月就掉了,商家直接跑路。TF签名,也就是TestFlight签名,这个一般是按包收费,第三方帮你上架的话,内容合规的话一般三百到八百块包过,能用三个月,到期续期大概一百多块一次,要是做满一万个设备的全年包,一般也就一千多块。要是你想要自己买一个现成的企业开发者账号,现在市场价大概三万到六万一个,官方渠道现在很难申请到,所以成本才这么高。
苹果的证书分发机制,现在官方一共认可几种路径。第一种就是AppStore上架分发,这个是官方正规路径,所有用户都能下载,搜索就能找到,也是最稳定的,但是审核非常严,很多内测App、企业内部App、不符合规范的小工具,根本过不了审,所以才需要其他签名方式。第二种就是企业内部分发,用企业开发者账号的企业证书分发,不需要上架AppStore,不限制设备数量,扫码就能装,适合企业内部用,但是滥用的话容易被苹果封证书,掉签概率很高。第三种就是Ad Hoc分发,也就是超级签名用的分发通道,需要绑定UDID,每个个人账号最多绑定100台设备,适合小批量内测。第四种就是TestFlight分发,也就是TF签名,是苹果官方开放的测试分发通道,本身就是苹果允许的,所以稳定性比企业签名好太多。
H5封装这个词,现在很多做公众号运营的朋友都听过,很多人把手机网页用H5封装成IPA包,做成看起来像原生App的样子,方便用户添加到桌面打开。但是很多新手都不知道,H5封装出来的IPA包本身是没有签名的,必须做IPA签名之后才能安装到iOS设备上。我每个月都能遇到好几个客户,花几百块做了H5封装,结果装不了,来找我才知道还要签名,白白多跑了一趟。所以现在我接H5封装的活,都会提前跟客户说清楚,封装只是做出来IPA包,不包含签名费用,签名要根据自己的用户量选类型。
掉签这个事,估计所有做过签名分发的开发者都恨得牙痒痒。我之前做一个短剧分发的内测App,那时候贪便宜,八十块钱一个月买了共享企业签名,刚开始半个月用着好好的,结果某天凌晨两点多,手机炸了,一百多个用户加我微信说App打不开,我爬起来一看,证书掉了。那时候推广刚烧了两千多块,好不容易攒了几百个用户,掉签之后一半用户嫌麻烦直接删了App,我心疼了好几天。那时候熬夜找渠道补签,折腾到四点多才弄好,重新发了下载链接,还是留不住人。
为什么会掉签?其实说白了,共享企业签名就是几十上百个App共用一个证书,只要其中一个App违规被举报,苹果就会封掉整个证书,所有App一起掉签,你说冤不冤。超级签名也会掉签吗?当然也会,如果你用的那个开发者账号被苹果封了,那所有绑定这个账号的设备都会掉签,补签也很麻烦,得重新绑定到新的账号,让用户重新下载。
这么多年用下来,我觉得最稳定好用的还是TF签名。TF是苹果官方的测试通道,只要你的App内容不违规,上架之后基本不会莫名其妙掉签,有效期是90天,快到期了提前重新提一下就行,根本不会影响用户使用。我那个短剧App掉签之后,转成了TF签名,用到现在快一年了,只在到期的时候重新提了一次,从来没出过问题,用户安装也不用去设置里信任证书,直接从TestFlight打开,系统根本不会拦截,体验比企业签名好太多。当然TF也有缺点,就是每个包最多只能放一万个测试设备,如果你的用户量超过一万,就得拆成多个包,而且审核也比企业签名严一点,违规内容肯定过不了,但只要你的内容合法,TF绝对是目前性价比最高最稳定的选择。
很多人说我直接上架AppStore不行吗?当然行啊,要是能上架,肯定优先上架AppStore,AppStore是官方渠道,用户信任度高,还能被搜索到,做推广也方便,我有一个记账小工具,提交了四次,去年终于过审上架了,现在用户量直接翻了三倍,比签名分发香一万倍。但就是很多App确实过不了审,比如内测版、企业内部办公App、一些符合用户需求但不符合苹果规范的小工具,只能走签名分发的路。
补签这个事,我也踩过不少坑。之前有个做直播内测的客户,大冬天的晚上十二点多,企业签名掉了,主播第二天早上就要开播,急得给我打语音,我从被窝里爬起来,冻得手都僵了,找渠道补签,折腾到三点多才弄好,那时候就下定决心,以后只要客户能做TF,我绝对不推企业签名。现在合作的老渠道,掉签了也能半小时内补好,但是那种说掉了不补的低价渠道,我碰都不碰,也绝对不推荐给客户。
我现在帮客户做签名,都会根据客户的情况推荐:如果只是几十个人的内测,自己花七百多买个个人开发者账号,自己生成P12,自己绑定UDID签名,最划算也最稳定,根本不需要找别人。如果是几百个用户的内测,不想自己弄号,超级签名按设备算,用多少花多少,也很合适。如果是几千个用户,内容合规,直接做TF签名,一千多块用一年,稳定省心。如果是企业内部几千人用,那整个独立企业签名,一个月几百块也够用。要是能上架AppStore,啥也别说,直接冲上架。
我之前自己做的一个去广告浏览器插件包,一开始用超级签名,一个设备一块多,一开始用户不多才几百个,也没什么问题,后来用户涨到三千多,一个月签名费就四千多,后来找渠道做了两个TF包,一共花了不到一千二,能用一整年,算下来比超级签名便宜了好多,还稳定,所以说选对签名方式,真的能省不少钱。现在很多刚入行的开发者上来就问我哪个最便宜,我都会跟他们说,稳定比便宜重要,掉一次签损失的用户和推广费,比你省的那点签名钱多太多了。
昨天还帮一个刚入行的学生开发者弄了TF签名,他做了一个校园社交的内测包,提交了三次AppStore都被拒了,花五百块上了TF,今天早上跟我说所有内测用户都装上了,一点问题都没有,听着他开心的声音,我也觉得挺舒服,毕竟当初我第一次把自己写的App成功装到自己手机上的时候,也是这么雀跃。