我接触苹果签名行业快六年了,从最早企业签名刚兴起的时候就帮朋友做内测分发,后来超级签名出来第一时间就上手测试,这些年帮几十个中小创业团队做过H5封装的IPA签名,也帮不少开发团队搭过内测分发体系,踩过不少坑也攒了很多实打实的经验,今天就以我自己的使用体验,把苹果签名相关的核心技术和真实体验说清楚。
首先说最基础的签名技术原理,iOS是闭源系统,所有想要安装到iOS设备上的应用,必须经过苹果官方授权的签名才能运行,这个机制是苹果用来把控应用安全、把控生态的核心规则。简单来说,苹果手里有一对密钥,开发者用合法的开发者证书(本质就是拿到苹果授权的私钥)给你的IPA安装包加密签名,用户设备的iOS系统会用苹果公开的公钥验证这个签名,只有验证通过的应用才能被打开,未签名或者签名失效的应用,直接会被系统拦截打不开。不管是我们说的官方上架App Store的应用,还是各种内测用的企业签名、超级签名,本质都是获得苹果合法授权的签名过程,我们常说的IPA签名,就是把开发者打包好的未签名IPA安装包,用合法的开发者证书重新做授权签名的过程,很多做H5封装的开发者,把H5页面打包成IPA安装包之后,因为应用不符合官方上架的规则没法进App Store,就会通过IPA签名的方式做分发,让用户可以直接安装,这个模式已经跑了很多年,非常成熟。
接下来聊很多人都听过但搞不懂的证书池机制,我最早接触证书池是做企业签名的时候,后来超级签名普及之后,正规的服务商都用上了证书池机制。简单来说,证书池就是服务商提前储备了大量合法的苹果开发者证书,把这些证书统一放到资源池里管理,根据应用类型、用户数量自动分配证书,不会把几千几万个应用都塞到一张证书里。而且如果某一张证书因为触发苹果检测被封禁掉签,证书池系统会自动把这张证书上的应用分配到其他有效证书上,自动完成重签补签,不需要用户手动操作。我现在合作的正规渠道,证书池里有两百多张个人开发者证书做超级签名,一百多张合规的企业证书做企业签名,而且他们会严格控制每张证书的安装量,个人开发者证书绝不超过90台设备,留出来10个额度的缓冲,企业证书单张也绝不签超过2000个应用,就是为了不触发苹果的异常检测。这么多年用下来,大部分时候都非常稳定,当然也遇到过问题,去年苹果大规模清理违规开发者账号,一下子封了渠道三十多张个人证书,好在证书池储备够多,当天就把所有受影响的应用自动重签完成,只有不到5%的用户需要重新下载,我对接的十几个客户里,只有两个客户来找我问情况,半小时内就解决了,几乎没影响用户使用。
然后说超级签名核心的UDID绑定机制,超级签名用的是99美元一年的个人苹果开发者账号,苹果的规则里,个人开发者账号最多只能绑定100台测试设备的UDID,所以超级签名的核心就是把要安装应用的设备UDID,提前添加到对应的开发者账号的设备列表里,再用这个账号的证书给IPA签名,这样对应设备就能正常安装打开了。UDID就是每一台iOS设备唯一的身份识别码,这个绑定是苹果规则要求的,绕不开。我最早做超级签名的时候,很多客户不理解,说为什么还要获取UDID,会不会泄露隐私,其实UDID只是一个设备识别码,不会获取用户的任何个人隐私信息,苹果官方做内测也需要UDID绑定,完全不用担心里程碑问题。这些年我遇到过的UDID相关问题很少,只有极少数换过手机主板的设备,升级系统之后UDID会变化,这种情况只要重新获取UDID绑定签名就能用,操作也很简单,现在正规的超级签名都做了自动获取UDID的流程,用户点一下下载链接就能自动获取,不需要手动复制,体验和普通下载没什么差别。
接下来聊聊完整的重签流程,我自己帮客户做过重签,也处理过无数次掉签后的补签,完整的流程其实很清晰:首先开发者提供打包好的IPA安装包,如果是做H5封装的客户,我们也可以协助完成封装,把H5页面打包成符合签名要求的IPA安装包;接下来根据应用的用户规模、类型选择对应的签名方式,一般小规模内测优先选超级签名,大规模用户可以选企业签名或者TF签名;然后调整IPA的配置信息,修改对应的bundle ID,清除旧的签名信息;如果是超级签名,就自动获取用户设备的UDID,添加到对应开发者账号的设备列表,生成对应的描述文件,再用证书给IPA重新签名,签名完成之后生成下载链接,用户就能直接下载安装了。如果是掉签后的补签,其实就是换一张有效证书重新走一遍签名流程,正规的渠道现在都是系统自动补签,掉签之后几分钟内就能完成重签,用户只要重启应用或者重新下载就能用,不需要找客服人工处理。我之前遇到过一次比较大的掉签问题,就是有个客户隐瞒了应用的违规内容,把一个博彩类应用混在正规应用里签名,结果被用户举报,苹果封了对应的证书,连累同池里几个正规应用掉签,我们发现之后第一时间下架了违规应用,当天就给所有受影响的正规应用完成补签,之后也加了应用预审环节,所有要签名的应用都要先审核内容,违规应用一律不接,从那之后再也没出现过这种连累正规应用的情况。
聊完基础技术,来说说大家最关心的超级签名与企业签名的真实稳定性对比,还有市面不同渠道的真实价格。我用了这么多年,负责任的说,只要是正规做证书池的渠道,超级签名的稳定性远高于普通企业签名,核心原因就是超级签名把用户分散到了上千个个人开发者账号里,一个账号最多100个用户,就算封一个账号,也只影响100个用户,不会像企业签名那样,一张企业证书签几万个用户,一掉签就是几万个用户同时用不了,影响非常大。从我自己的实测数据来看,正规渠道的超级签名,年掉签率不到10%,也就是说100台设备一年下来,不到10台会遇到掉签,大部分设备能稳定使用到应用停止运营,80%以上的应用都能保持全年稳定运行,体验非常好。
价格方面,市面不同渠道的差异非常大,超级签名一般是按绑定的设备数收费,正规稳定的渠道,单个设备一年的费用大概是3-10元,量大会更便宜,1000台设备以上大概3-5元一台一年;那种一两块钱一台的共享超级签名,大多都是用黑卡注册的开发者账号,或者一张证书塞几百个用户,掉签率能达到50%以上,经常补签到服务商都跑路,完全不建议用。企业签名的话,分共享企业签名和独立企业签名,共享签名就是很多个应用共用一张企业证书,价格大概是一个月50-200元,稳定性极差,我见过最多的一个月掉了8次,补都补不过来;独立企业签名就是一张证书只给你一个应用用,稳定的价格大概是一个月400-1500元,顶级的稳定企业证书一年要大几千,成本很高,一般小团队用不起。
除了这两种,现在还有TF签名和官方上架,TF签名是苹果官方的TestFlight内测渠道,是苹果官方认可的内测方式,稳定性是最高的,基本不会掉签,除非你主动下架,价格一般是按次收费,正规渠道大概300-800元上架一次,能放一万个测试名额,有效期一年,缺点就是审核比超级签名严,违规应用过不了,而且名额有限,超过一万个就要重新上架。官方上架就是把应用提交苹果审核,通过之后就能直接上架App Store,所有用户都能下载,但是审核规则非常严,很多H5封装的应用、内测工具类应用都过不了审核,所以大部分不符合要求的应用才会选择用超级签名、企业签名分发。很多人问超级签名和超级签名上架AppStore的关系,其实超级签名本身是做内测分发的,不能直接上架App Store,但是很多开发团队会先用超级签名做内侧,收集用户反馈修改应用,调整好了之后再提交官方上架,这个是现在很多创业团队常用的流程,先做H5封装IPA签名,用超级签名分发测试,成熟之后再走官方上架,过了就进App Store,没过就继续用超级签名分发,灵活性非常高。
这么多年用下来我最大的感受就是,苹果签名不是大家想的那样一定会经常掉签,只要选对正规的渠道,有足够大的证书池,控制好单张证书的安装量,提前审核应用内容,稳定性真的很高,我手里现在跑的十几个应用,最长的已经稳定运行四年多了,累计十几万安装量,掉签需要补签的不到五千次,掉签率不到4%,大部分用户从安装到卸载都没遇到过掉签问题,体验非常好。当然我也遇到过小渠道坑人的情况,早年贪便宜找过一个个人渠道,价格比正规渠道便宜一半,结果他只有不到十张个人证书,掉了一张之后半个月都没弄到新证书补签,害得我被客户骂了一顿,从那之后我就只合作正规的大渠道,哪怕价格贵一点,但是稳定有保障,掉签了能及时补签,不会出问题。
对于现在还在找稳定签名渠道的开发者来说,如果你的应用没法走官方上架,用户规模在几万人以内,超级签名真的是性价比最高的选择,稳定性够,价格也不高,补签也方便,完全能满足分发需求。