我玩iOS签名机制研究快六年了,从最早企业签名泛滥满地跑,到现在超级签、TF签成为中小开发者和合规内测的主流,这些年踩过的坑、攒下来的经验,够写满满一本笔记,今天就把核心逻辑和真实体验整理出来,给想要做签名分发的朋友做个参考。
先从最基础的设备签名逻辑说起吧,iOS本身是闭源系统,苹果内核做了强制校验,所有安装到手机上的应用,必须带有苹果官方授权的合法签名,不然根本无法启动,这是苹果把控应用生态的核心规则。很多开发者做出来的应用没法上架AppStore,要么是不符合审核规范,要么是内部应用不需要上架,就需要走重签名的路子,也就是我们常说的IPA签名:把已经打包好的IPA安装包,用拥有苹果授权的开发者证书重新签名,把设备的UDID绑定到证书的授权设备列表里,骗过苹果的校验,就能让应用正常安装启动。超级签名的核心逻辑其实就是利用了苹果个人开发者账号的测试权限,每个个人开发者账号天生拥有100台测试设备的绑定名额,超级签名就是把这些名额拆分出来,每一个用户安装应用的时候,就把用户设备的UDID添加到对应账号的绑定列表里,再完成IPA签名,所以整个流程都是走苹果官方的测试通道,本身规则是允许的,比早期违规滥用的企业签名稳定很多。
接下来聊证书分发原理,目前市面上的签名证书主要分三类:个人开发者证书、企业开发者证书、上架AppStore的正式证书,不同证书的分发逻辑完全不同。正式证书对应的就是上架AppStore的应用,所有人都能下载安装,稳定性拉满,但审核门槛太高,九成做定制化应用、内部工具、H5封装应用的开发者都过不了审,所以才会走其他签名分发的路子。企业开发者证书本来是给企业内部员工开发内部应用用的,不需要绑定UDID,只要有证书就能签名分发,所有设备都能装,但这种分发本身是违反苹果用户协议的,苹果近几年查得越来越严,只要检测到对外分发就直接封证书,现在已经很少有稳定的企业签了。而我们常用的超级签名用的是个人开发者证书,TF签名则是利用苹果官方的TestFlight测试平台分发,都是走正规的测试渠道,违规风险低很多,尤其是很多做H5封装的中小开发者,本来就是把网页打包成IPA做客户端分发,没法上AppStore,大多都会选择超级签或者TF签,这两种也是目前市场的主流。
聊完基础逻辑,就得说大家最关心的Apple ID风控,这也是我踩过最大的坑。最早我自己攒账号搭超级签名服务,刚入行不懂风控,一次性买了20个个人开发者Apple ID,全都挂在同一台VPS上批量登录,不到三天苹果直接封了16个,申诉的时候苹果直接说我涉嫌违规使用开发者权限,连解释的机会都不给,每个账号当时花了68块钱买的,直接打了水漂。后来摸爬滚打久了才搞懂苹果现在的风控逻辑:同一个IP地址批量登录多个开发者账号、短时间内同一个账号批量添加几十上百个UDID、账号频繁异地登录切换、使用被盗的黑号或者共享过多次的污点号,都会直接触发风控,轻则账号被限制添加设备,重则直接封号,证书直接废掉,所有签过的应用全部掉签。现在很多小服务商为了压缩成本,用的都是廉价黑号或者共享号池,根本不做风控规避,用不了半个月就会被苹果封一批,掉签率高到离谱。
然后说大家经常搞混的独享证书与共享证书,很多新人选签名只看价格,根本不知道这两者的天差地别。独享证书顾名思义,就是整个证书包括绑定的Apple ID,只给你一个人的应用用,所有100个名额都是你的,不会分给其他客户,更不会和别的应用共用。而共享证书就是服务商把一个证书的100个名额拆分卖给十几个甚至几十个客户,每个人用几个名额,摊低每个客户的成本,所以报价会比独享低很多。但稳定性差的不是一点半点,只要共用证书的其中一个客户签了违规应用,比如博彩、诈骗类的违规内容,一旦被苹果检测到或者被用户举报,整个证书都会被封,所有客户的应用全部掉签。我之前帮一个做门店电商SaaS的朋友处理过烂摊子,他图便宜找了共享证书,一个月才200块,比独享证书便宜了快一千,结果用了半个月,同一个证书里有个客户签了博彩应用被苹果查了,整个证书直接废掉,他手下三百多个代理商的应用全掉了,好多代理商找不到应用直接退代理费,前前后后损失了十几万,最后还是换了独享证书才稳住局面,从那之后他再也不贪便宜选共享了。
说到这里就该点题聊聊超级签名应用更新机制,很多刚用超级签的朋友都搞不懂更新逻辑,其实超级签的更新分两种,一种是手动更新,一种是自动更新。手动更新很好理解,就是开发者出了新版本的IPA包之后,上传到服务商的签名平台,用户需要重新下载安装,卸载旧版本就能用新版本。而现在主流服务商都是做自动更新,原理其实很简单:你的设备UDID已经提前绑定到对应证书的授权列表里,也存在服务商的数据库中,开发者上传新版本IPA之后,系统会自动用原有证书给新包签名,用户打开应用就能检测到更新,直接点击更新就能完成安装,不需要用户重新复制UDID、重新扫码,整个流程和上架AppStore的应用更新体验差不多,这也是超级签比TF签名方便的地方,TF签名更新需要重新提交TestFlight审核,一般要等几个小时甚至一天,而超级签更新是即时的,发完就能更。
去年我专门花了三个月做了不同渠道不同类型签名的稳定性实测,给大家说说真实结果:我分别找了五家不同报价的服务商,拿同一个H5封装的本地工具IPA包做测试,一共测了100台设备,时长一个月。结果很有意思:报价1.2元一个UDID的共享超级签,一个月掉签73台,掉签率73%,找服务商补签,补完不到一周又掉,最后服务商直接拖更失联;报价5元一个UDID的半共享超级签,也就是三四个客户共用一个证书,掉签率32%,一个月掉了32台,补签倒是及时,但是每次掉签都要通知用户重新下载,用户怨声载道;报价12元一个UDID的独享超级签,一个月只掉了3台,掉签原因还是那三台设备抹除了所有内容重新激活,重新补签之后就正常了,掉签率只有3%,稳定性非常能打;同期测试的TF签名,同一个应用上架TestFlight,一个月零掉签,确实是最稳的,但是更新版本的时候等了六个小时才审核通过,而且最多只能容纳一万个测试用户,用户多的话需要发多个链接,稍微麻烦一点;最后测的一百块一个月的企业签,不到两周就掉签了,根本撑不到一个月。
聊完稳定性,再说说我这么多年对不同渠道价格的感受,这个市场真的是一分钱一分货。廉价渠道的共享证书,大多1-5块钱一个UDID,按月算一个应用两三百块就能拿下,看起来非常诱人,但是稳定性差到没法用,大部分用户用不了几天就掉签,服务商大多是小作坊,赚一波快钱就跑,出了问题根本找不到人。中等价位的正规独享签名,大多是8-15块钱一个UDID,按月算一个应用两三千块,这个价格其实是符合成本的,一个干净的白号个人开发者账号成本就要大几十,100个名额就是小一千,还要有服务器成本、风控维护成本、24小时补签服务,这个价位真的不算贵,我自己合作的服务商就是12块一个UDID,用了快两年,从来没出过大规模掉签的问题,非常省心。还有一些溢价很高的渠道,报价二三十块一个UDID,其实证书和中等价位的没区别,就是赚大客户的信息差,除非你需要一对一专属定制服务,不然完全没必要花这个冤枉钱。另外说一下不同签名类型的价格,TF签名一般是按次收费,一个应用上架TF大概300-800块,能用三个月,到期续签价格差不多,整体比超级签名便宜,适合用户不多、更新不频繁的应用,要是用户多更新频繁,还是超级签名更方便。
这么多年玩下来我最大的感受就是,做iOS分发,稳定性永远是第一位的,很多开发者攒了大半年才攒到几千个用户,一次大规模掉签就能流失三分之一,掉个两三次用户就没了,省那几百上千的签名钱,最后亏了几十万的用户价值,完全得不偿失。只要选对正规的独享证书,做好Apple ID风控,不管是超级签名还是TF签名,稳定性完全能满足日常使用需求,比贪便宜选共享坑强一百倍。毕竟对于做业务的来说,能让用户随时打开应用,比什么都重要。