我接触iOS签名整整六年了,从最早的企业签名萌芽时代就开始踩坑,见过各种各样的掉签翻车,也帮不少朋友解决过签名相关的问题,今天就以我自己的经验,把iOS签名里的核心逻辑、坑点、不同证书的体验全都理清楚,给需要的朋友做个参考。做iOS开发或者做移动端业务的朋友都知道,iOS是出了名的封闭生态,任何想要安装在iPhone上的应用都必须经过苹果的签名授权,没有经过签名的IPA包,别说正常运行,连安装这一步都过不去,这也是苹果保障生态安全的核心机制,我最早就是因为帮公司做内部办公工具,没法上架AppStore,才一头扎进了签名这个领域。
先给大家说最基础的设备签名逻辑,其实核心逻辑很简单:苹果通过开发者证书来验证应用的合法性,签名就是把开发者证书的公钥和你的IPA应用包做绑定,当用户手机启动应用的时候,iOS系统会自动校验这个签名的合法性,如果签名有效、证书被苹果信任,应用就能正常打开,如果签名失效或者证书被苹果吊销,应用就会直接闪退或者弹出“未受信任的开发者”提示,根本没法用。不管是哪一种签名类型,核心逻辑都是这样,哪怕是现在大家常用的H5封装,本质上就是把移动端H5页面套一个原生壳生成IPA包,之后还是要走IPA签名流程,才能安装到iOS设备上,H5封装本身不解决签名的问题,签名才是整个流程里最影响稳定性的环节。
接下来讲证书分发原理,目前市面上主流的分发渠道一共四种,对应不同的证书逻辑:第一种就是大家最熟悉的AppStore,这是苹果官方的正式分发渠道,所有上架AppStore的应用,都是用苹果给的生产证书签名,开发者提交应用之后经过苹果审核,上架后用户下载的时候,苹果还会做一次官方重签名,所以这种是最稳定的,永远不会掉签,但是门槛极高,审核规则非常严格,很多企业内部应用、不符合规范的创业项目、特定行业的应用根本没法通过审核上架,所以才有了第三方签名的需求。第二种就是TF签名,也就是TestFlight签名,这是苹果官方提供的内测分发渠道,本质上是用苹果开发者账号的内测权限来分发应用,一个TF应用最多可以提供一万个测试名额,签名是苹果官方认可的,所以掉签概率比普通企业签名低很多,分发也很方便,用户点击链接就能直接安装,不需要越狱,也不用改设置。第三种就是企业签名,用的是苹果给企业级开发者的企业证书,苹果推出企业证书的初衷是让企业给内部员工分发内部应用,不需要上架AppStore就能直接安装,所以现在很多没法上架AppStore的应用都会用企业证书做签名分发,而企业证书又分成了大家常说的独享证书和共享证书,这也是今天我要说的重点。
讲完基础原理,就得说大家最关心的Apple ID风控,这也是决定签名稳不稳定的核心因素,我最早踩的最大的坑就是栽在苹果风控上。苹果现在的风控机制越来越完善,也越来越严格,系统会实时监控每一个Apple ID对应的证书的签名数量、安装扩散量、绑定的设备数量,如果同一个证书短时间内签名了上百个不同的应用,安装量扩散到几十万甚至上百万台设备,苹果的风控系统就会直接判定这个证书违规,直接吊销证书的授权,也就是大家常说的掉签,证书一旦被吊销,所有用这个证书签名的应用都会全部打不开,必须重新签名才能用。苹果的风控还会关联很多细节,比如如果你的Apple ID是黑产盗来的,或者是批量注册的,本身就在苹果的风控黑名单里,哪怕你刚拿到证书,可能没几天就被封了;如果签名用的IP地址是之前批量注册过账号的黑IP,整个IP段的账号都可能被牵连封号,我之前就遇到过一次,整个服务商几十张证书一天之内全被封,就是因为IP出了问题。
接下来就是大家最关心的独享证书和共享证书的区别,我这么多年用下来,两者的稳定性差了不止一个档次。共享证书就是服务商把一张企业证书共享给几十个甚至上百个客户用,大家的不同应用都签在同一张证书上,每个客户只需要付很少的钱,优点就是价格极低,我接触过的渠道里,共享证书的IPA签名一般一个月只要30到100块,不少小工作室甚至十几块钱就能签一个季度,听起来非常划算,但缺点真的能把人折磨疯。刚才说了苹果的风控规则,一张证书塞了上百个应用,安装量轻轻松松就突破阈值,触发风控掉签是早晚的事,我最早贪便宜用共享签名的时候,最多一个星期掉了三次签,每次掉签都要重新打包重新发安装包给用户,用户投诉到炸,那次我做的是一个H5封装的本地生活服务APP,掉签那次刚好是周末商家做活动,几百个用户打不开应用,直接损失了好几千的营收,比我省的那点签名钱亏多了。除了容易掉签,共享证书还有不少坑,我之前就遇到过服务商偷偷在签名的时候给IPA加广告壳,打开应用就弹乱七八糟的低俗广告,我查了三天代码都没找到问题,最后才发现是签名环节被加了东西,真的太恶心了,还有不少小服务商收了年费之后不到一个月就卷钱跑路,群解散联系方式拉黑,哭都没地方哭。
而独享证书就完全不一样,真正的独享证书就是一张证书只给一个客户用,只签客户自己的应用,不会给其他任何第三方的应用签名,这从根源上就解决了触发风控的问题,因为一张证书只有几个最多十几个应用,安装量也可控,远远达不到苹果的风控阈值,所以掉签概率低得多。我说说不同渠道的价格感受吧,这么多年对比下来,真的印证了一分钱一分货这句话:共享签名最便宜,一个月几十块,但是稳定性极差,适合临时用个三五天的测试包;TF签名一般是两百到三百块钱一次,能用三个月左右,稳定性比共享签名好很多,但是名额最多一万个,审核也比较严,不少应用过不了TF审核,适合中小体量的内测应用;独享企业签名的价格差很大,小渠道的独享证书一个月大概要800到1000,正规稳定的大渠道,真独享证书一般一个月1200到1600左右,看起来比共享贵了十几倍,但是稳定性真的天差地别。
我去年专门做过三个月的稳定性实测,当时我手里刚好有三个项目:一个是公司内部用的CRM工具,一百多个员工天天要用;一个是给本地商家做的H5封装同城优惠APP,大概有几千个活跃用户,因为资质问题没法上架AppStore;还有一个是创业项目的内测版,我分别给三个项目用了三种不同的签名:第一个同城APP用共享证书,结果第五天就掉签,补签之后第八天又掉,半个月掉了三次,最后实在没法用直接换了;第二个内测版用TF签名,跑了两个多月只掉过一次,还是因为应用内容触发了苹果审核被踢了,整体稳定性不错,就是名额满了之后就没法加新用户了;第三个内部CRM用的是正规渠道的独享证书,我从三月初用到六月底,整整三个月一次都没掉过,我那三个月天天盯着企业证书的状态,本来以为最多稳定一个月,结果全程都能正常打开,后来我直接把那个同城APP也迁到了这个独享证书上,到现在大半年了,只掉过一次,还是去年苹果那次大规模清理企业证书,整个行业都掉了一大片,服务商当天就给我换了新的独享证书,重新签名十分钟就恢复了,完全没影响用户使用。
这么多年下来,我最大的感受就是,对于需要长期稳定运行的应用来说,独享证书的那点成本真的不算什么,换来的是不用天天提心吊胆等掉签通知,不用反复给用户发新的安装包,用户体验好了不止一点,流失率也低了很多。当然也要提醒大家,现在不少服务商把三五个人共用的证书也叫独享,其实本质还是半共享,这种也很容易掉签,一定要找能保证真独享,掉签能及时补签的服务商,不要贪小便宜吃大亏。总的来说,如果你只是临时测试用,共享签名能凑合用,如果要长期运营,没法上架AppStore,独享证书绝对是性价比最高的选择,稳定才是这个行业最核心的竞争力,掉一次坑带来的损失,远远比你省的那点签名钱多得多。