我接触苹果各类签名技术快七年了,最开始接iOS外包开发的时候,不少客户做内部办公APP、内测版本或者不符合App Store规范的轻应用,不想走官方上架流程,又要让用户能正常安装,我就开始泡各种技术论坛研究签名,从最开始自己手动用工具重签,到现在和国内多家成熟服务商合作,见过太多坑,也摸透了各种签名的真实体验,今天就以我多年的实际使用经验,把这些技术掰碎了说清楚。
首先说最基础的IPA签名技术原理,很多刚入行的朋友以为签名就是改个文件后缀,其实完全不是这么回事,苹果整个iOS生态的安全基础就是代码签名机制:所有安装到iOS设备上的APP,必须经过苹果信任的开发者证书签名,系统安装前会校验签名的合法性,没有签名或者签名不被苹果信任的APP,直接会被系统拦截,根本打不开。我们常说的IPA签名,本质就是用苹果官方签发的信任证书,给未上架的IPA包重新写入合法的签名信息,绕过App Store安装验证,让系统允许安装。现在很多中小创业者做轻应用,都会先做H5封装,把H5页面打包成标准IPA包,再做签名就能直接分发,不用花大价钱开发原生APP,也不用过苹果严苛的审核,这也是为什么H5封装+IPA签名现在这么火的原因。
接下来说说大家听得很多的证书池机制,这也是决定签名稳定性的核心,说到这里就绕不开苹果企业签名证书来源,正规苹果企业签名的证书,都来自299美元一年的苹果企业开发者账号,这种账号本身就是苹果给企业用来做内部员工APP分发的,不需要上架就能安装,正规服务商的证书都是自己用合法企业资质申请的,每一个账号都可查,而小商家或者黑产的证书,大多是收来的实名信息申请、甚至是盗用他人信息注册的,来源根本不靠谱。证书池就是服务商把几十上百本不同的企业证书整合在一起做成的资源池,为什么要做证书池?因为苹果对每一本企业证书的签名数量、分发下载量都有隐性的风控阈值,如果你把几百个APP都签到一本证书上,很容易触发风控被封,证书池就是把不同客户的APP分散到不同证书上,控制单本证书的负载,就算某一本证书被封了,也能马上从池子里调出备用证书给客户重签,不会出现掉签之后没人补的情况。我合作了五年的大服务商,现在证书池有一百二十多本正规企业证书,全部都是自己合规申请的,每本证书签名的APP数量不会超过三十个,严格控制下载量,从根源上降低了被封的概率,这也是他们家签名稳定性远高于小商家的核心原因。
再说说UDID绑定,这个机制是超级签名的核心,每一台iOS设备都有一个独有的识别码,叫做UDID,苹果个人或者公司开发者账号(99美元一年的那种),允许开发者最多绑定100台测试设备的UDID,只有绑定了UDID的设备,才能安装用该账号证书签名的APP,超级签名本质就是把苹果给开发者测试用的机制,拿来做商业化分发。我最开始做内测的时候,还需要用户手动复制UDID发给我,我再手动加到开发者后台,现在技术早就迭代了,用户点下载链接就能自动获取UDID,自动绑定自动重签,整个过程一分钟都不用,非常顺畅。
我自己也经常动手做重签,对整个重签流程熟得不能再熟:第一步拿到未签名的原始IPA包,不管是原生开发导出的,还是H5封装好的,第一步都是先脱壳,移除原有的旧签名信息,解压提取APP内部的所有资源和二进制文件;第二步根据你选的签名类型,匹配对应的证书和描述文件,如果是超级签名,这一步已经自动获取了用户UDID,生成了绑定好UDID的新描述文件,如果是企业签名,直接用企业证书对应的描述文件就行;第三步用苹果官方的codesign工具或者开源的自动重签工具,给APP所有文件重新签名,验证签名无误之后再重新打包成新的IPA包,上传到分发平台就能给用户下载了,整个自动化流程下来,三五分钟就能做完,非常高效。
接下来就是大家最关心的,超级签名与企业签名的真实稳定性对比,还有不同渠道的实际价格,我这么多年用下来,八成以上的签名需求都能稳定运行,只有小概率会遇到掉签问题,掉签之后只要服务商靠谱,补签也非常快。先给大家报一下我这些年接触到的不同渠道的真实价格:共享企业签名,就是多个客户共用证书池里的证书,个人散单接活一般50元一个月,不包补签,掉了不管;小服务商的共享签名大概100元一个月,掉了包补,但平均半个月到一个月就会掉一次;大服务商的正规共享签名,来源靠谱的,一般150元一个月,掉了免费补,平均两三个月才掉一次,非常稳定。独立企业签名就是一本证书只给你一个APP用,小服务商报价300-400元一个月,大服务商正规证书的报价是500-800元一个月,控制得好的话半年都不会掉。超级签名一般按下载量收费,普通渠道是2-5元一个下载,1000下载起充,量大的话能降到1.2-1.8元一个下载,那种不到1元一个下载的基本都是黑号,别碰。TF签名就是TestFlight签名,本质是放到苹果官方测试平台,价格一般是300-600元一次,有效期90天,包过审,过不了全额退。官方上架App Store的话,普通合规APP服务费是3000-10000元不等,包过审,过不了退一半,特殊行业APP价格会更高。
说回稳定性对比,我这么多年的实际感受是,只要选对正规来源的证书,企业签名的稳定性其实远没有大家说的那么差,我去年帮一个开生鲜连锁的朋友做H5封装的会员预约APP,找大服务商做了独立企业签名,一共花了不到六千块包一年,到现在已经14个月了,只掉过一次,那还是去年苹果大规模清理违规企业证书,整个行业都掉了一批,服务商当天下午就从证书池调了新的证书给我重签补好了,还做了分发链接自动跳转,用户点原来的链接就能直接下载新包,一百多个会员根本没感觉到影响,现在每天都有几十个人用,一直非常稳定。反而我早年贪便宜找过那种100块用一年的共享企业签名,证书来源不明,才12天就掉了,商家直接跑路,连补签都找不到人,亏了钱还耽误了客户的事。
超级签名的稳定性其实也不错,原理上只要不超苹果100台设备的限制,账号不被封,就不会掉,我做一个二十多个人的项目内测,用了正规超级签名,一共花了不到两百块,用了快十个月,只掉过一次,还是因为那个开发者账号到期没续费,续费之后重新签一下就好了,非常省心,适合小范围的内测或者小体量的用户,不过如果是几万用户的大项目,超级签名按下载收费的成本就会比企业签名高很多,不如企业签名划算。
我这么多年确实也遇到过不少问题,除了刚才说的贪便宜踩坑掉签找不到人,也遇到过描述文件过期、证书因为账号年审没做好被封的情况,不过只要找正规服务商,这些问题都能解决,我现在合作的服务商承诺2小时内补签,一般我这边反馈之后,半小时就能搞定,对业务的影响非常小。
现在市面上的签名类型其实已经很全了,能走官方上架肯定官方上架最稳定,用户信任度也高,但是很多企业内部APP、内测版本、不符合苹果规范的轻应用过不了审,就可以根据自己的需求选:小范围内测选超级签名,成本低稳定;大规模分发选企业签名,性价比高;想要最高稳定性选TF签名,官方背书几乎不会掉签,H5封装的轻应用也都可以做签名,完全能满足需求。核心就是要注意苹果企业签名证书来源,一定要选正规服务商,别贪便宜找来源不明的证书,就能保证大部分时间稳定运行,就算出问题也能快速解决。