我接触苹果签名行业快六年了,最开始是帮身边创业的朋友做定制小工具,后来自己也接一些中小开发者的H5封装、IPA定制需求,摸爬滚打这么多年,从最开始手动重签踩坑,到现在用过几乎所有类型的签名服务,见过太多人因为贪便宜选了不靠谱渠道掉签损失用户,也见过很多人搞不懂签名原理乱花钱,今天就以我个人的真实体验,给大家做一次深度总结。
首先说最基础的签名技术原理,iOS本身是闭源系统,安装机制有非常严格的签名校验,只有经过苹果官方授权签名的应用,才能正常安装启动,没有合法签名的IPA包,下载后也会提示“无法验证应用”根本打不开。我们常说的IPA签名,本质就是利用苹果开发者账号的不同权限,给未上架的IPA包重新加上合法的签名信息,绕过系统校验实现安装。为什么会有这个需求呢?因为官方上架App Store的审核规则非常严格,很多不符合规范的应用,比如企业内部办公APP、定制化工具、垂直领域的社区应用,还有大量开发者做的H5封装应用,根本没法通过官方审核上架,所以才需要第三方签名服务来实现分发,也就是我们常说的ios签名公开下载,签完之后生成公开链接,用户直接就能下载安装,非常方便。如果应用能满足官方上架的要求,其实走官方上架是最稳定的,用户下载体验最好也不会掉签,但对大多数没法上架的应用来说,签名就是成本最低的分发方案。
接下来聊一聊现在主流的证书池机制,这是大平台和小工作室最核心的差距之一。我最刚开始做签名的时候,市场上大多是单证书服务,一个服务商就一两张证书,所有用户的应用都挤在上面,风险极高。现在正规服务商都会做证书池,就是把几十上百张不同的苹果开发者证书整合到一个资源池里,用户签名的时候,系统自动从池里挑选负载低、无违规应用的证书给IPA签名,不会把所有鸡蛋放在一个篮子里。证书池的核心优势就是分散风险,苹果如果封禁了某一张证书,也只会影响签在这张证书上的少数应用,池里还有大量备用证书可以立刻补签,不会出现整个平台所有应用集体掉签的情况。我自己用证书池服务快四年了,整体稳定性比单证书好太多,当然也不是说证书池就完全不会出问题,去年苹果收紧内测签名审核的时候,我有一个应用刚好签在被封禁的证书上,当天就掉签了,不过服务商不到两个小时就给我换到了池里另一张可用证书,重新生成了下载链接,只有不到半天的中断,对用户的影响非常小,如果是小工作室的单证书,估计要等好几天才能重新出证书,损失就大了。
然后说UDID绑定,这是很多人搞不懂的一个点,UDID是每台iOS设备独一无二的识别码,相当于设备的身份证。UDID绑定就是,如果你用的是个人开发者账号做超级签名,或者做TF签名,都需要把用户设备的UDID添加到开发者账号的测试设备列表里,只有绑定过UDID的设备,才能安装对应的签名应用。苹果规定个人开发者账号每个最多只能绑定100台测试设备,这也是超级签名按设备收费的原因。我最开始手动做超级签名的时候,还要引导用户去网站手动复制UDID,操作麻烦还容易出错,现在正规平台都做了自动获取UDID的功能,用户点一下链接就能自动获取,几秒钟就能完成绑定,体验好了很多。当然UDID绑定也会出问题,我之前遇到过用户更换苹果ID之后,不小心抹除了设备信息,导致原来绑定的UDID验证失效,还有就是一些黑商用盗用的个人开发者账号做签名,账号被封之后所有绑定过的UDID都会失效,所有用户集体掉签,我早年贪便宜试过一次,损失了上百个老用户,之后就再也不敢用非正规渠道的账号了。
聊完基础概念,说一下完整的重签流程,我自己偶尔也会给小量定制应用手动重签,流程其实非常清晰:第一步拿到开发者打包好的原始IPA包,先解压提取出里面的应用核心内容,移除原有的无效签名信息;第二步根据选择的签名类型,配置对应的证书和描述文件,如果是需要UDID绑定的超级签名,就先把收集好的用户UDID添加到描述文件里;第三步生成对应的授权文件,用签名工具给应用重新签名;最后把签好的应用重新打包成IPA,上传到下载服务器,生成ios签名公开下载链接和二维码,用户就能直接下载安装了。现在大平台都做了自动化签名系统,整个流程不到五分钟就能完成,比我自己手动操作快十几倍,大部分时候我都会直接走平台自动签名,只有极少数特殊定制的应用才会手动调整。偶尔也会出问题,比如原始IPA的bundle ID不对,或者有残留的签名信息,导致签完之后打不开,重新调整一次就能解决,不算大问题。
接下来就是大家最关心的,超级签名与企业签名的真实稳定性对比,还有不同渠道的价格,我两个都长期用过,给大家说真实的体验,我这么多年用下来,80%的时间都是稳定可用的,只要选对渠道完全能满足分发需求。首先说企业签名,企业签名用的是299美元一年的苹果企业开发者账号,不需要绑定UDID,任何设备都能安装,没有设备数量限制。价格差非常大:小工作室的共享企业签名,就是几十上百个应用共享一张证书,什么违规应用都往里放,价格一般一个月50到150块,这种稳定性最差,我早年试过,一个月掉三四次都是常事,掉签之后商家补签还拖,经常两三天都弄不好。第二种是独立企业签名,就是一张证书只放少量正规应用,不接违规内容,价格一般一个月300到800块,看应用类型,这种稳定性就好很多,我现在有一个内部工具应用用的就是独立企业签名,快一年了只掉过一次,补签当天就好了,整体非常稳定。
然后是超级签名,超级签名用的是个人开发者账号,按绑定的设备数量收费,现在市场价格一般是1到3元一个设备,用户量超过一千的话量大可以优惠到0.6到1元一个,就是说一千个用户大概花费六百到三千块,用完配额再续。超级签名因为一个账号最多绑定100台设备,就算一个账号被封,也只会影响这一百个用户,不会波及所有用户,所以稳定性比共享企业签名好很多,我之前做H5封装的本地社区应用,初期用户不到八百,用了一年多超级签名,只掉过两次,都是单个账号被封,补签之后很快就恢复了,体验非常不错。对比下来,我个人的真实感受是:用户量不到一千的时候,超级签名的稳定性和独立企业签名差不多,成本更低;用户量过万之后,超级签名的成本会比独立企业签名高很多,选稳定的独立企业签名更划算。
最后还要提大家容易忽略的TF签名,TF签名就是苹果官方TestFlight内测签名,是苹果官方认可的内测分发方式,也是我用过稳定性最好的签名,几乎不会掉签,我现在有一个不能上架的H5封装应用,用TF签名快两年了,从来没掉过签。TF签名一般按次收费,能容纳最多10000个测试用户,价格一般一次200到1000块,性价比非常高,唯一的缺点就是用户需要跳转到TestFlight下载,不如直接下载方便,但胜在绝对稳定,适合大部分正规内测应用。
我做这么多年签名,确实也遇到过不少问题,除了之前说的贪便宜找小工作室掉签找不到人,还有过因为证书里混了违规应用被牵连掉签的情况,苹果检测到证书里有违规应用,会直接封禁整个证书,正规应用也会跟着掉签,所以现在我签名都会选不接违规应用的正规平台,虽然价格贵一点,但稳定很多,掉签了补签也快,不会影响正常使用。整体来看,只要选对适合自己用户量的签名类型,找正规渠道,80%以上的时间都是稳定可用的,完全能满足中小开发者未上架应用的分发需求,ios签名公开下载的模式也非常方便,开发者直接把链接放到官网就能让用户自主下载,省了很多官方上架的麻烦,是非常成熟的未上架应用分发方案。