我接触苹果iOS签名行业快六个年头了,从最早帮朋友做内测APP签企业签名,到现在给几十家中小团队做签名和H5封装服务,见过太多不靠谱的坑,也摸透了市面上所有签名品类的底层逻辑,今天就以我自己的实际使用经验,给大家讲讲苹果签名的那些事,从原理到实际体验,说点真实的体验。
首先说最基础的签名技术原理,iOS是闭源系统,苹果为了保证设备安全,所有能在iOS上启动的APP,都必须经过苹果官方授权的签名验证,没有签名或者签名失效的IPA包,下载后要么根本安装不成功,要么安装完点开会直接提示“未受信任的开发者”,甚至直接打不开。本质上来说,IPA签名就是用苹果开发者账号生成的合法证书,对未上架的IPA安装包进行加密校验,给IPA包加上苹果认可的合法身份标识,让iOS系统验证通过后允许启动。不管是企业签名、超级签名还是我们今天要说的TF苹果签名与TestFlight,核心都是绕不开IPA签名这一步,所有的机制都是围绕怎么拿到合法证书给IPA做签名来设计的。
接下来讲很多服务商都在说的证书池机制,我最早接触签名的时候,很多小服务商就是手里拿一两张企业证书,给几百个IPA一起签名,根本没有证书池的概念,后来苹果吊销证书,所有签过的APP全掉签,客户找过来我都没法交代。现在正规的大服务商都会做证书池,就是把几十上百张不同主体、不同账号的正规开发者证书整合到一个资源池里,给客户的IPA做签名的时候,会把同一个客户的APP分散到不同的证书里,甚至把同一个APP的不同下载量分到不同证书,就算某一张证书因为被举报、被苹果吊销出问题,也只会影响一小部分用户,其他用户的APP完全不受影响,而且证书池里还有冗余的证书可以马上补签,不会出现全平台掉签的情况。我就遇到过一次,前年合作的一个中小服务商,证书池只有不到十张企业证书,其中一张被吊销之后,刚好我三个客户的APP都在这张证书上,一下子几千台设备掉签,我带着客户找服务商补签,补了整整三天才全部搞定,那段时间天天被客户追着骂,后来我换了现在合作的服务商,光是做TF的开发者证书池就有五十多张正规账号,做企业签的证书池也有三十多张,从来没出现过大规模掉签的情况,就算单个证书出问题,半天就能补完,影响极小。
再说说UDID绑定这个核心机制,UDID是每一台iOS设备独一无二的识别码,苹果的所有开发者测试服务,都要求绑定设备UDID才能授权安装,区别只是不同签名的绑定方式和限制不一样。比如超级签名,本质就是用大量个人开发者账号来做签名,每个个人开发者账号最多只能绑定100台设备的UDID,所以服务商就要收集大量个人账号,每有一个新用户安装,就把这个用户设备的UDID绑定到某个还有名额的个人账号上,再给这个用户单独签名IPA,所以超级签名是安装的时候就要绑定UDID。而企业签名用的是企业开发者账号,不需要绑定UDID,所以可以不限设备安装,这也是企业签名之前火的原因,但也正是因为不需要绑定,大量APP堆在一个证书上,很容易被苹果检测到吊销。而TF签名也就是TestFlight,其实也需要UDID绑定,只不过这个过程是苹果官方自动完成的,用户不需要手动复制粘贴UDID,只需要点一下邀请链接,跳转到TestFlight就能自动完成绑定下载,比超级签名方便太多,而且TestFlight每个测试版本最多可以绑定10000个UDID,足够绝大多数中小开发者和内测项目使用,不够的话还可以做多轮测试,完全能满足需求。
我自己也经常动手做重签,这么多年下来对重签流程门清,一般来说重签的流程是这样的:首先拿到需要修改或者重新签名的原始IPA包,先解压拿到包内的核心内容,移除原来的旧签名和旧的描述文件,然后根据当前要用的证书生成新的描述文件,修改对应的bundle ID等配置信息,再对IPA内的核心执行文件重新做哈希计算,用新证书做签名加密,最后重新打包生成新的可安装IPA包,再分发或者上传。说起来简单,实际操作踩坑无数,我最早做H5封装出来的IPA,自己动手重签,好几次因为没开对应权限,签完之后APP里的推送、定位都用不了,还有一次没改对证书的授权,安装完直接打不开,折腾了半天才找到问题。现在一般都是交给服务商做重签,毕竟他们有成熟的工具,出错率低很多,更新版本的重签一般几个小时就能搞定,非常方便。
接下来就是大家最关心的超级签名与企业签名的真实稳定性对比,还有不同渠道的价格,我这么多年经手的单子,对价格和稳定性摸的门清。先说价格,不同渠道差价非常大,企业签名里,共享证书的企业签,淘宝或者小商家一般一个月199到399,最便宜的99都有,但是这种就是几十上百个APP共用一张证书,稳定性极差;独立证书的企业签,就是一张证书只给几个客户用,一般渠道价格一个月1200到2500,大服务商还要贵一点,稳定性比共享签好很多。然后是超级签名,超级签名一般按下载量收费,个人代理一般是2到3块钱一个下载,一级服务商量大的话能做到1.2到1.8块一个下载,但是很多小服务商有扣量的问题,实际算下来更贵。然后是我们说的TF苹果签名,TF签名一般两种收费方式,一种是包月包量,普通的是一个月500到1200,一年的话3000到5000,无限下载那种,另一种按下载量的话是0.5到1块钱一个下载,比超级签名便宜很多。
然后说稳定性,我这么多年的实际体验,企业签名不管是共享还是独立,稳定性都是最差的,共享签我见过平均一周掉一次的,独立签再好也基本三四个月就会掉一次,只要苹果抽风查企业证书,或者有一个APP在证书上违规,整个证书所有APP全掉,补签还要等服务商重新出包,快的一天慢的好几天,用户体验极差。超级签名比企业签名好一点,只要不用黑号,一般稳定性在几个月到半年,但是只要账号被封,绑定这个账号的所有设备全掉,而且超级签名按下载收费,用户换设备就要重新算下载,成本其实不低。我之前就遇到过一次,服务商用的黑号,就是盗来的或者买来的非正规开发者账号,用了半个月账号被苹果封了,两百多台设备一下子全掉签,最后还是我自己掏钱给用户补签,亏了不少。
而TF签名,也就是TestFlight,这是我最近三四年用的最多的,也是稳定性最好的,因为TF本身就是苹果官方推出的内测测试渠道,签名是苹果官方直接做的,根本不存在第三方证书被吊销的问题,只要你的APP本身合规,不被举报违规,放在TF里一两年都不会掉签,我现在有三个客户的APP,放在TF里两年多了,从来没出过问题,用户一直正常安装使用。当然也不是说TF完全不会出问题,我也遇到过掉签的情况,去年有一个做本地生活服务的客户,被同行恶意举报,说里面有违规引流内容,苹果把TF测试给下架了,我马上联系合作的服务商,服务商从证书池里调了一个新的正规开发者账号,改了一点不影响使用的内容重新提交审核,TF审核比官方上架松太多了,当天下午就过审了,半天就完成了补签,只有不到一百个已经安装的用户需要重新下载一次,几乎没影响客户的业务,换成之前的企业签,估计要折腾好几天,还得影响几千用户。
很多人会问,为什么不直接做官方上架?我其实一直都建议,能做官方上架的尽量做官方上架,官方上架当然是最稳定的,还能在App Store被搜索到,获取自然流量,但是确实有很多APP没办法上官方上架,比如企业内部用的OA、不对公众开放的私域APP、一些特定行业的工具APP,很多都不符合官方上架的审核规则,根本过不了审,所以才需要用第三方签名,而TF就是目前最好的选择,稳定性远超过超级签名和企业签名,价格也不贵,使用体验也好,用户不用跳过多轮验证,点一下链接就能下载,非常方便。我现在给客户做H5封装的IPA,只要不是要求不限量安装的大流量APP,我都推荐做TF签名,九成以上的客户用了之后都觉得稳定,很少出问题,就算出问题补签也快,比之前用企业签名省心太多了。这么多年走过来,我最大的感受就是,苹果签名这块一分钱一分货,想要稳定少麻烦,优先选TF签名,不管是体验还是稳定性,都比传统的超级签名和企业签名好太多,只要选对正规的服务商,基本不用操心掉签的问题。