我接触苹果签名快八年了,从最早折腾个人测试签名到现在帮身边朋友做IPA签名分发,大大小小的坑踩过,也见证了这个行业从混乱慢慢走向规范,最近这段时间很多朋友找我问,自己的应用遇到苹果开发者应用下架,没法继续在App Store提供下载,想要继续分发给用户或者内部使用,选哪种签名靠谱,索性把我这么多年的深度使用经验整理出来,给大家做个参考。
想要弄明白各种签名的区别,首先得搞懂苹果签名的核心技术原理。 iOS是苹果完全闭源的系统,为了保证设备安全、防止盗版和篡改应用,苹果规定所有能在iOS设备上正常启动的应用,必须经过苹果授权的合法签名,简单来说就是非对称加密验证的过程:开发者用苹果颁发的开发者证书私钥给IPA应用包加密签名,iOS设备启动应用时会用苹果官方的公钥验证签名,验证通过才能正常打开,验证不通过就会弹出“无法验证应用”“开发者不受信任”的提示,根本没法使用。 所以不管是官方上架App Store,还是我们说的各种内测分发签名,本质都是给IPA包做合法的苹果授权签名,这是所有苹果应用分发的基础,哪怕是H5封装出来的应用,想要让用户直接安装到iOS设备,也必须先做IPA签名才能使用。
我最早做签名的时候,业内大多是单证书签名,就是一个IPA包只用一张开发者证书签名,一旦这个证书被苹果吊销,整个应用直接掉签,所有用户都没法用,那时候我帮公司做内部应用,一次掉签就得挨个通知用户重新下载,折腾好几天,后来慢慢就出来了证书池机制,现在正规服务商基本都用证书池模式。 所谓证书池,就是服务商把几十上百张不同主体、不同注册渠道的合法开发者证书整合到一个资源池中,同一个IPA包会同时用多张不同的证书完成签名,当其中某一张证书因为苹果政策调整、违规清理等原因被吊销之后,证书池里其他有效证书会马上补位,用户不需要找开发者重新要安装包,只要点原来的分发链接就能自动下载用新证书签好的安装包,掉签影响被降到最低。 当然这里我也踩过坑,有些小服务商宣传自己是证书池,其实池子里就两三张证书,本质跟单证书没区别,掉签之后还是全掉,根本没有补位的空间,所以选证书池还是得找规模大的正规服务商。
说到UDID绑定,这是超级签名绕不开的核心环节,每一台iOS设备都有一个独有的设备识别码,就是UDID,苹果对个人开发者账号的限制是,每个个人开发者账号最多只能绑定100台设备的UDID,也就是说一张个人开发者证书最多只能给100台设备安装的应用签名,超级签名的整个流程就是围绕UDID绑定走的。 用户想要安装应用,首先需要在服务商的H5分发页面授权获取设备UDID,服务商后台拿到UDID之后,会把它添加到对应开发者证书的绑定设备列表中,再用这个证书给IPA包重签之后上传到分发服务器,用户就能下载安装了。 我之前遇到过不少UDID绑定的问题,比如苹果几年前调整了UDID获取的接口规则,很多小服务商还用旧的获取方式,经常出现获取失败、绑定错误的情况,导致用户装不上应用;还有些不良服务商,会把同一个UDID重复卖给多个客户,消耗你的名额,比如你买了100个名额,没装几个用户就显示名额已满,其实就是被重复扣了额度,这种坑我刚入行的时候就踩过,白白浪费了几百块钱。
我自己平时也会给一些测试版应用做重签,整个重签流程说复杂不复杂,说简单也有不少细节要注意。 一般来说,完整的重签流程是这样的:第一步拿到需要重签的原始IPA包,如果是H5封装的应用,就是先把开发好的H5页面打包成符合规范的IPA安装包;第二步,解压IPA包,提取里面的配置信息,修改权限配置文件,去掉原来的旧签名信息;第三步,用你手里有效的开发者证书,结合新的权限文件重新给IPA包生成签名;第四步,把签好名的新IPA包上传到分发服务器,生成下载链接,用户就能点击下载安装了。 我之前重签一个带消息推送功能的企业内部OA,就是因为权限文件里推送权限没配置对,结果用户装完之后根本收不到推送,折腾了快一下午才找到问题,所以重签看似步骤少,细节错一点就没法正常用。
讲完基础的概念,我结合自己这么多年的使用经验,说说大家最关心的超级签名和企业签名的真实稳定性,还有不同渠道的价格差。 我这些年用过不下十几个不同服务商的签名,总的来说,只要选对正规渠道,80%以上的时间签名都是稳定可用的,只有不到20%的情况会遇到掉签补签的问题,远没有网上说的那么不堪。
先说说超级签名,超级签名因为是每个设备绑定UDID,用个人开发者证书签名,本身分散了风险,不会因为一个证书掉了影响所有设备,所以正规的超级签名稳定性其实很高。 我自己公司的内部客户管理系统,用大服务商的超级签名用了快一年半,只掉过一次,那次是因为苹果清理一批违规注册的开发者账号,刚好碰到我们用的那个证书,服务商不到一小时就给补签好了,用户点原来的链接重新下载就能用,几乎没影响使用。 价格方面,超级签名不同渠道的价格差很大:小渠道一般按下载次数收费,大多是0.8-3元不等一个安装,那种0.8-1元的基本都是用黑号,就是盗刷信用卡注册的开发者账号,我之前贪便宜拿过这种,一个月掉了六次,最后服务商直接跑路,应用停了快一周才换好渠道,亏了不少;正规大渠道一般按年度名额收费,100个名额一年大概是300-600元,不限下载次数,量大的话还能谈优惠,平均下来每个设备一年才几块钱,稳定性有保障。
然后说企业签名,企业签名用的是苹果的企业开发者账号,不需要绑定UDID,支持无限安装,适合用户量比较大的应用,现在稳定的企业签名其实也很好用。 我前年帮一个本地商家做H5封装的同城生活服务应用,因为还没拿到相关资质没法官方上架,就用了独立证书的企业签名,前前后后用了八个多月,只掉过一次,服务商两个小时就补好了,几千个用户几乎没感觉到影响。 当然企业签名坑也多,那种几十块钱一个月的共享企业签名,就是几百个应用共用一张证书,只要其中一个应用违规,整个证书所有应用都掉,一周掉两三次都是常事,我刚入行的时候用过这种,补签到吐,根本没法给用户用。 价格方面,共享企业签名一般一个月50-150元,适合临时测试用,长期用绝对不行;独立企业签名就是一个证书只放你一个应用,稳定性高很多,价格一般一个月300-800元,根据应用类型不同价格有差异;要是专属定制证书,就是用你自己的企业账号签名,价格一般一个月1500-3000元,稳定性最高。
除了这两个,现在还有TF签名和官方上架,我也说说实际使用体验,TF签名其实是苹果官方的TestFlight测试分发,本质也是官方认可的签名方式,所以稳定性是所有非上架签名里最高的,只要你应用不违规,基本不会掉,我有一个测试版的社交应用,TF签名挂了快两年,都没掉过,当然TF签名也有局限,就是每个应用最多只能有10000个测试名额,超过名额就得重新提包,而且下载需要用户跳转到TestFlight安装,部分用户会觉得麻烦,价格方面,TF签名一般按次收费,不包过审核的大概100-200元一次,包过审核的大概300-600元一次,掉签的概率极低,很少需要补签。 而官方上架App Store当然是最稳定的,只要你的应用符合苹果的规则,不违规,基本不会被下架,就算遇到苹果开发者应用下架,只要修改内容重新提交审核就能恢复,但是官方上架审核严,对资质要求高,很多没版号的游戏、内部测试应用、小商家的定制应用都没法上架,所以才会用各种签名方式。
这些年我遇到最多的问题其实就是证书被苹果吊销,尤其是最近两年苹果对第三方签名分发查的越来越严,每年都会清理一批违规的开发者账号,正规服务商有足够的证书储备,掉签之后很快就能补签,我现在合作的服务商,承诺掉签2小时内补完,基本都能做到,而小服务商没有储备,掉签之后要好几天才能补,甚至直接不给补,让你重新付钱。 总的来说,现在苹果签名技术已经很成熟,只要你找正规服务商,应用本身不违规,80%以上的时间都是稳定可用的,就算遇到掉签,补签也很快,完全能满足内部测试、未上线应用分发、下架应用续用的需求,如果你遇到苹果开发者应用下架,又暂时没法重新上架,完全可以根据自己的用户量和需求,选适合自己的签名方式,不用太担心稳定性的问题。