我做独立iOS开发快五年,接了不下百个不上AppStore的定制开发单,天天跟iOS签名打交道,踩过的坑能绕我出租屋三圈,今天就把遇到的所有问题掰碎了说,都是实打实的经验。
刚入行的时候,很多新手问我P12证书到底是什么,怎么用?我最早也懵,三十块钱买了个所谓的“通用P12”,拿来签名结果三天就掉签,后来才搞懂,P12根本不是什么随便能用的通用文件,它是你从苹果开发者后台导出证书时,把证书和对应的私钥打包在一起生成的文件,是给IPA签名的核心凭证。没有私钥的P12根本签不了,我碰过一个新手,只导出了cer证书文件,没在钥匙串里选私钥一起导出,折腾一下午签不上,跑来问我,我给他说,必须打开钥匙串访问,找到你申请的证书,展开后选中证书和下面的私钥,右键导出才能生成能用的P12。而且P12也分开发版和发布版,自己内测用开发版没问题,要分发出去给用户用,必须用发布版P12。还有最重要的,自己的P12千万别随便外借,我之前一个朋友把自己个人开发者账号的P12借给朋友用,结果对方拿它签了违规APP,直接把整个账号封了,朋友自己好几个签名的APP全掉签,亏了小一万,说起来都骂娘。
说点大家最关心的,不同渠道签名的真实价格,我这么多年摸得门清,绝对不说虚的。超级签名按设备算,现在市场价正常是3-8块钱一个UDID,低于3块的基本都是坑,我之前碰过1.5块一个的,贪便宜买了50个设备,结果半个月账号被封,全掉签,商家直接失联,钱打了水漂。企业签名分两种,共享签就是几十上百个APP共用一个企业证书,价格便宜,一个月50-150块,适合短期内测,长期用千万别碰,掉签掉的你怀疑人生。独立企业签就是一个证书只放你一个APP,稳定很多,价格一个月1500-3000,要是你是工具类、特殊需求的APP,价格还要涨到3000-5000一个月,确实贵,但稳定性比共享签高太多。然后是TF签名,也就是上架TestFlight的签名,现在一般按次收费,一次审核上架能管90天,价格大概是600-1500一次,包一年续签的也就1500-2000,比独立企业签划算太多。如果是H5封装加IPA签名全套,就是你本来只有H5网页,要做成APP安装,全套下来大概是500-1000一年,太便宜的一百两百的千万别要,我之前贪便宜做过,结果封装的时候被加了广告壳,隔三差五弹赌博广告,最后只能重新做,钱花了两份还得罪了客户。要是你自己有苹果开发者账号,找别人代签名,只收手工费,一般一次50-100块,适合自己有账号的开发者。
很多人搞不懂设备签名原理和UDID绑定,其实说穿了很简单,苹果不允许未签名的APP在iOS上安装,所以你要绕开AppStore安装,就得用苹果官方认可的签名方式。超级签名走的是苹果Ad Hoc分发渠道,苹果允许个人开发者账号最多绑定100台测试设备,公司开发者账号最多绑1000台,原理就是把每个要安装APP的用户设备的UDID,提前绑定录入到开发者后台的设备列表里,再用这个账号的P12证书给IPA签名,苹果就会认可这个APP是给这些设备做测试用的,就能正常安装了。所以UDID绑定就是这么来的,一个设备绑定一次,只要账号不封,不删除UDID,就一直能用,收费按设备算也是这个原因。那为什么企业签名不用UDID?苹果给企业开发者账号的权限就是企业内部分发,不需要绑定设备,不限安装数量,只要用企业证书签名,用户信任证书之后就能安装,这就是苹果最基础的证书分发机制。现在苹果的分发机制一共三种:第一种是AppStore上架分发,就是你签名后上传AppStore,用户从应用商店下载,最稳定,但是审核最严,很多APP过不了;第二种就是企业内部分发,就是企业签名走的渠道,不需要苹果审核,直接分发;第三种就是Ad Hoc和TF测试分发,都是官方允许的测试分发,稳定性比企业分发高很多。
说到掉签补签,我一肚子苦水,早几年刚接了一个婚庆公司的预约小工具,客户不想上架AppStore,说只给自己的客户用,不想公开下载,我图便宜找了个80块一个月的共享企业签,结果上线第三天刚好碰上客户做活动,一百多个客户装了APP,早上起来直接全部闪退,客户几十个电话打过来骂我,说活动砸了要扣我两千尾款。我赶紧找商家补签,结果商家说证书被苹果封了,要重新换证书,让我等四个小时,等签完发出去,已经有快十个客户走了,最后尾款真的扣了两千,我找谁说理去。其实掉签大多都是两种情况,一种是共享证书里有人签了违规APP,被举报,苹果直接封了整个证书,所有人一起掉签;另一种是苹果查到企业证书用来给外部APP分发,不是企业内部用,直接吊销证书。补签其实就是换个新的有效证书,重新给IPA签名,然后让用户重新下载安装,靠谱的商家一般非违规掉签都会免费补,要是碰到不靠谱的小商家,收了钱掉签就失联,你只能自认倒霉。我上个月还碰到一次掉签,一个老客户用了一年多的独立企业签,刚好赶上苹果封了一批企业证书,凌晨三点掉的,我早上起来看到几十条消息,赶紧联系服务商,半个小时就换好证书重新签好了,没造成大损失,这就是找靠谱渠道的好处。
现在很多客户都是只有H5网页,想要做成APP一样安装在手机桌面,所以少不了H5封装,就是把H5网页打包成IPA格式的安装包,然后再做IPA签名,这个流程现在很成熟,正规平台半小时就能打包好,但是一定要注意,很多小平台会偷偷给IPA插壳,加广告代码或者窃取数据的代码,我之前就踩过这个坑,客户用了半年才发现弹乱七八糟的广告,查了半天才找到是封装的问题,只能重新封装重新签名,又花了一份钱,还差点丢了老客户。所以H5封装一定要找口碑好的渠道,最好是能自己看源码,别贪那几十块的便宜。
很多人问,为什么不直接做AppStore上架,非要搞签名?哪有那么容易,现在AppStore审核越来越严,你做个加密笔记,没有网安资质直接打回;你做个企业内部OA,不需要对外开放下载,上架AppStore还要交年费,完全没必要;你做个个性化壁纸,不小心碰了版权内容,直接被拒,十次八次过不了,浪费时间又浪费钱。所以很多开发者都会选择TF签名,TF签名本质就是把你的APP作为测试版上架到苹果官方的TestFlight平台,审核比AppStore正式上架松太多,大部分正常的APP都能过,而且是苹果官方平台,只要你APP不违规,基本不会掉签,稳定性仅次于AppStore正式上架,用户安装也方便,点个链接就能跳转到TF下载,不用像企业签名那样还要手动信任证书,体验好太多。我现在接的单子,只要APP体积不超过TF的限制,我都推荐客户做TF签名,价格不贵,一次几百到一千多,能用三个月,到期重新上传一次就行,比企业签名省心太多。
我现在自己的小工具,用户不到一百个,都是自己买个人开发者账号,一年688,自己绑UDID自己签名,算下来一个设备才六块多,比找第三方买划算多了,也稳定,只要自己不违规,根本不会掉签。要是用户多,就找正规渠道做TF签名,从来不会像早几年那样天天担心掉签。其实做iOS这么久,只要你有不上架AppStore的需求,就免不了跟签名打交道,选对方式比什么都重要,别贪便宜,找靠谱的渠道,长期用就选稳定的,短期内测再用便宜的共享签,就不会出什么大问题。我这些年踩过的坑,希望刚入行的朋友能避开,少花点冤枉钱,少得罪点客户,安安稳稳做开发就行。