我接触苹果签名已经快七年了,从国内企业签名刚兴起的时候就开始研究,帮几十家创业团队、中小商家做过IPA签名、H5封装分发,也试过从共享企业签到证书池企业签、超级签名、TF签名的几乎所有类型,踩过不少坑也攒了很多实打实的经验,今天就把我这些年的深度使用体验整理出来,给需要做iOS内测分发的朋友做个参考。
首先得说清楚苹果签名的核心技术原理,iOS系统本身是闭源生态,为了保证设备安全和应用规范,苹果设置了严格的签名验证机制,任何没有经过苹果授权签名的APP都无法在iOS设备上安装运行。简单来说,苹果握有最高权限的系统公钥,而合法的开发者证书带有苹果授权的私钥戳,我们做IPA签名,本质就是用合法的通用签名证书给未授权的IPA安装包加上这个苹果认可的身份戳,让iOS系统验证通过,允许APP安装运行。不管是H5封装出来的IPA包,还是开发者自己打包的内测安装包,只要你不做官方上架App Store,就必须做签名才能让用户正常安装,这个是iOS的底层规则,没人绕得开。很多中小商家做自己的业务APP,既没有足够的资质走官方上架,也不需要面向全量用户公开下载,只是给自己的客户或者员工用,签名就是成本最低、最便捷的选择。
接下来要说的证书池机制,是我这些年体验下来,保证签名稳定最核心的底层设计。早年很多小服务商都是手里只有两三张通用签名证书,把几百上千个APP全部堆在一张证书上,苹果的动态检测机制很容易识别到这种超量违规使用的证书,一旦检测到就会直接封掉证书,所有挂在这张证书上的APP会全部掉签,所有用户都无法打开使用。而正规服务商做的证书池机制,就是提前申请几十上百张不同的通用签名证书,把所有客户的APP分散部署在不同证书上,每个证书只放规定数量的APP,绝不会超量承载,同时后台24小时实时监控每个证书的状态,一旦某个证书出现被苹果预警或者被封的情况,系统会自动把这个证书上的APP转移到其他空闲的合格证书上,最快十几分钟就能完成重签补签,对用户的影响非常小。我现在用了三年的服务商,证书池里常年保持五十张以上可用的通用签名证书,每个月还会新增五六张全新的证书,淘汰掉有风险的旧证书,这种模式下稳定性比早年的单证书模式提升了不止一个档次。
说到UDID绑定,很多刚接触签名的朋友都搞不清这个概念,其实UDID就是每一台iOS设备独有的识别码,相当于设备的身份证,苹果对不同类型的开发者证书有明确的设备数量限制,比如个人开发证书,一个苹果开发者个人账号最多只能绑定100台设备的UDID。我们常用的超级签名,本质就是用大量个人开发者账号的证书整合起来提供服务,当用户要安装你的APP的时候,系统自动获取用户设备的UDID,把这个UDID添加到对应的开发者账号里,再给你的IPA包做签名,所以每一台安装你APP的设备都需要绑定UDID,这个是完全符合苹果官方规则的操作,所以本身的稳定性基础就很好。我早年在创业公司做内部办公APP,一共才四十多台员工设备,直接用自己花99美元买的个人开发者账号绑定UDID做签名,一分钱额外成本都没有,用了大半年都没出任何问题,就是团队扩张到一百多人之后,个人账号的设备限额不够用了,才找服务商做批量签名。
我自己动手做过重签,也熟悉服务商的标准化流程,完整的重签流程其实清晰又高效:第一步是需求方提供已经打包好的IPA包,如果是做H5封装的客户,正规服务商一般都可以提供封装服务,直接把你的H5站点打包成符合苹果要求的IPA包;第二步是根据你选择的签名类型匹配对应资源,如果是企业签名,就会从证书池里挑选一张符合要求的空闲通用签名证书,直接给IPA做重签;如果是超级签名,就会生成对应的推广安装链接,用户点击链接之后自动获取UDID,系统自动分配可用的个人开发者证书绑定UDID,完成签名生成可安装链接;如果是TF签名,就会把你的IPA包提交到苹果TestFlight后台,审核通过之后生成TF下载链接,整个流程一般几个小时就能搞定。掉签之后的补签,本质就是重新走一遍重签流程,正规服务商在服务期内都是免费补签的,不会额外收费,我用了这么多年,从来没有遇到过补签还要收钱的情况,只有那些不良小商贩才会收补签费。
关于不同渠道不同类型的价格,我这么多年接触下来也门清,目前行业内的大概行情是这样:首先是企业签名,分共享证书和独立证书两类,共享证书就是很多客户共用一张证书,小工作室或者个人给出的共享企业签,一个月价格大概在50到150元不等,价格便宜但是稳定性差,掉签概率很高;然后是证书池模式的独立企业签,正规服务商的价格大概是包月300到800元不等,如果你是正规的内部办公APP、内测APP,没有违规内容,价格一般在300到500元一个月,稳定性很好,如果是一些风险类APP,价格会更高,而且稳定性也会差很多。然后是超级签名,超级签名是按绑定的设备数量收费,目前市场价大概是单设备3到10元一年,设备量越大单价越便宜,100台设备以内一般是8到10元一台,1000台以上就能谈到3到5元一台,掉签之后补签不需要额外付费,只要绑定过的设备就能一直使用。然后是TF签名,TF签名一般是按提报次数收费,一次全包价格大概是1000到2000元,TestFlight的测试有效期是90天,到期之后需要重新提报,价格比企业签高,但是稳定性很好,是官方认可的测试渠道。官方上架的话,如果你自己不会提报,找第三方代上架,价格从几千到几万不等,看APP的类型和复杂度,过审之后就是永久在App Store,是所有分发方式里最稳定的,但是门槛很高,需要营业执照、软件著作权等齐全资质,审核也非常严格,很多不符合App Store规范的APP根本无法上架,所以大部分内测、定制化APP还是会选择签名的方式。
最后聊聊大家最关心的超级签名与企业签名的真实稳定性对比,我这么多年的实际体验说句公道话:只要是正规服务商做的,用好证书池机制的优质企业签,稳定性其实不比超级签名差,甚至对于大流量的内部使用场景来说,企业签更划算,体验更好。超级签名因为规则本身就是绑定UDID,符合苹果的官方要求,所以本身掉签概率确实比劣质共享企业签低很多,但是超级签名按设备收费,设备量超过一万的话,整体成本会比企业签高很多,而且一旦某个个人开发者账号被封,只会影响这个账号绑定的几百台设备,不会影响所有用户,影响范围很小。而劣质的共享企业签,稳定性确实比超级签名差很多,很容易批量掉签,但是优质的证书池企业签,我自己用了三年,一年下来掉签次数不到三次,每次补签都在两小时以内完成,99%的时间都是稳定可用的。我也遇到过掉签的情况,去年苹果春季大规模清理违规企业证书,我用的服务商证书池里五十多张证书只封了三张,不到一小时就给我补签好了,完全没耽误我们内部的项目推进,而我另一个朋友用的小服务商,一共三张证书封了两张,拖了三天才补好,直接耽误了原定的内测上线计划。总的来说,只要选对了有正规证书池、用优质通用签名证书的服务商,80%以上的时间签名服务都是稳定好用的,掉签补签只是极小概率的事件,不会影响正常的业务开展。
就我个人的使用体验来说,苹果签名发展到现在,技术已经非常成熟,不管你是做内部内测、H5封装APP,还是暂时没法走官方上架,只要需求合规,选对合适的签名类型和服务商,完全可以满足稳定使用的需求,比硬着头皮冲官方上架成本低很多,也灵活很多。