我接触苹果签名已经快六年了,最早做个人iOS开发帮朋友做内测分发,一路摸爬滚打试过几乎所有类型的签名方案,从个人免费签名到共享企业签、独立企业签、超级签名、TF签名都深度用过,也帮上百个客户做过H5封装IPA后的签名部署,对这个行业里的深浅可以说了如指掌,今天就以第一视角给大家讲点实实在在的干货。

先从最基础的签名技术原理说起,很多刚入行的朋友只知道签名能让iOS装未经上架的IPA,却不知道背后的逻辑。苹果iOS系统是闭源生态,所有能正常安装打开的应用,都必须经过苹果官方的授权签名,系统启动应用的时候第一时间就会校验签名的合法性,签名无效或者被吊销的应用,直接会被系统拦截打不开,甚至连安装步骤都过不了。我们常说的P12文件,本质就是苹果开发者证书的导出文件,里面包含了证书的私钥,就是用来给IPA包做授权签名的核心凭证,不管是企业签名还是个人开发签名,都离不开有效的P12证书。

接下来讲证书池机制,这也是现在稳定签名的核心保障,我早年踩坑就是因为很多小服务商根本没有证书池,就是拿一两张P12企业签名共享证书,塞满几百个应用就开始卖,出问题全掉。正规的证书池机制,是服务商把几十上百张合法的P12企业证书整合进自动化分发系统,做动态负载调度,每张证书都会严格控制签名的应用数量和总安装设备量,不会超过苹果的风控阈值,一旦某张证书出现被苹果预警或者吊销的迹象,系统会自动把这张证书上的所有应用切到池里其他可用证书上,自动完成重签补签,整个过程用户甚至都感知不到,这就是为什么有证书池的共享签稳定性能提升这么多。

然后说UDID绑定,很多人分不清不同签名的UDID要求,这里给大家理清楚:超级签名必须做UDID绑定,因为超级签名用的是个人开发者账号,每个个人账号最多只能绑定100台设备的UDID,所以不绑定根本没法安装;TF签名也需要UDID,因为苹果TestFlight的内测机制本身就需要记录测试设备的信息;而传统的企业签名原本不需要UDID绑定,但是现在做稳定共享签的服务商,都会提供可选的UDID绑定服务,就是给你的应用限制最大安装设备数,每台安装的设备都会记录UDID,超过配额就不允许新设备安装,这么做的目的就是降低苹果的风控检测概率,毕竟苹果的企业开发者证书本来就是给企业内部员工做内测用的,如果你无限制让几十万设备安装,很容易被苹果检测到违规吊销,做了UDID绑定控制规模,掉签概率能下降一大半,我自己在用的H5封装应用就开了UDID绑定,限制一万台设备,开了之后快八个月没掉过签,稳定性提升非常明显。

再讲实际的重签流程,我自己不仅用服务商的平台,也动手做过本地重签,整个流程其实并不复杂,不管是原生IPA还是H5封装出来的IPA都适用:第一步你需要拿到未签名或者需要重新签名的原始IPA安装包,先解压开,删除IPA包里原来的旧签名文件,也就是_CodeSignature文件夹,还有旧的描述文件embedded.mobileprovision;第二步就是导入你要使用的P12证书和对应生成的新描述文件,用codesign命令行或者第三方桌面签名工具、在线签名平台,对包里的.app主程序文件重新做签名校验,生成新的签名文件和描述文件;最后再把修改后的文件重新打包压缩成IPA格式,就是可以直接分发安装的签名包了。如果是掉签之后补签,本质就是重新走一遍重签流程,换一张可用的有效证书重新签名,用户只需要重新安装一次新包就能恢复使用,正规有证书池的平台,这个过程都是自动化的,根本不需要用户手动操作,上传一次IPA之后,掉签补签都是后台自动完成。

接下来给大家说一下真实的行业价格,还有超级签名与企业签名的稳定性对比,这也是大家最关心的问题。目前市场上不同类型签名的价格差异非常大,我给大家报的都是正常行情价,避免大家被坑:首先就是我们说的P12企业签名共享证书,也就是共享企业签,个人小作坊接单的话,一般一个月50到150,这种大多没有证书池,不推荐;正规中大型服务商的带证书池共享企业签,价格一般一个月150到300,根据应用类型调整,这个是目前性价比最高的;如果是独立P12企业证书,也就是一张证书只签你一个应用,价格一般一个月600到1200,适合大用户量的应用。然后是超级签名,超级签名按设备收费,市场价一般是每台设备1到3块,100台设备的季度套餐大概是150到200,用户多的话成本很高。TF签名也就是TestFlight内测签名,一般一次上架收费200到500,有效期三个月,年付的话大概1000到1500,最多支持一万个测试用户。官方上架App Store的话,个人开发者账号年费是688,找代上架的话从几千到几万不等,看应用类型和审核难度。

接下来讲真实稳定性对比,很多人被网上的言论带偏,觉得企业签就是不稳定,超级签名TF签名更稳,其实我用了这么多年,负责任的说,只要找对带证书池的正规P12企业签名共享证书,稳定性不比任何一种签名差,甚至性价比更高。我自己有一个H5封装的工具类IPA,用正规共享签已经快一年了,一共只掉过三次签,都是半夜掉的,服务商证书池自动补签,我第二天早上看的时候已经生成了新的安装链接,大部分用户都没发现异常,只有两三个早起打开的用户来找我,让他们重新扫码安装就好了,前后不到五分钟就解决了。

当然我也遇到过掉签坑,刚入行的时候贪便宜找过一个一个月30块的共享签,那家就是一张P12证书塞了快三百个应用,什么违规的棋牌、博彩都往上签,结果一周掉三次,每次掉签我都要把IPA发给服务商,等大半天才能补好,折腾了一个月我就换了,那种不稳定根本不是共享签的问题,是服务商不靠谱,为了赚快钱滥发证书导致的。

那超级签名的稳定性怎么样?我去年帮一个做本地商家服务的朋友做签名,他一开始听别人说超级签名稳,就选了超级签名,做了八千多个用户,三个月花了快两万块,结果赶上苹果清理个人开发者黑号,他用的两百多个个人账号一下子被封了八成,所有用户全部掉签,补签又花了一万多,后来转成我用的正规P12共享签,一年才不到三千,用到现在快一年了只掉过一次,稳定性好太多,成本只有原来的十分之一。超级签名的本质是用个人账号签名,本来就是打苹果规则的擦边球,苹果一清理账号就是大批量掉签,而且按设备收费,用户换手机就要重新给钱,用户量上来之后成本比企业签高太多,根本不适合大规模推广。

再说说TF签名,TF签名是苹果官方的内测渠道,确实很少掉签,但是TF的局限性太大了:第一TF也要过审核,违规应用根本上不去,审核比App Store松但也会拒审;第二用户下载非常麻烦,要跳转到TestFlight,还要一步步点安装,很多小白用户根本不会操作,流失率非常高;第三TF最多只能容纳一万个测试用户,用户超过这个数就要重新上架,每次更新都要重新审,非常麻烦,所以TF只适合小范围的技术内测,根本不适合给大量用户用。官方上架App Store当然最稳,下载也方便,但是审核太严,很多内测应用、企业内部应用、不符合App Store规则的应用根本上不去,而且上架成本高周期长,所以大部分有签名需求的用户,其实还是走企业签名的路。

这些年我也遇到过不少证书问题,除了刚才说的小服务商滥发证书导致的掉签,还遇到过一次因为应用内容擦边导致的掉签,去年年底我给那个工具应用加了个新功能,内容稍微打了点擦边球,结果不到一周就掉签了,我去找服务商,服务商帮我排查之后告诉我是内容触发了苹果的风控,让我修改内容之后重新提交,帮我换了证书池里另一张证书重新签名,之后就再也没掉过,其实这种掉签根本不是签名的问题,是应用本身的问题,哪怕你上App Store也会被下架,所以想要稳定,应用本身合规才是前提。

总的来说,接触苹果签名这么多年,我最大的感受就是,很多人对P12企业签名共享证书有误解,觉得共享就一定不稳定,其实只要选对带自动化证书池的正规服务商,严格控制每张证书的应用数量和设备规模,稳定性完全可以满足需求,性价比比超级签名、TF签名都高太多,不管是原生IPA签名还是H5封装后的IPA签名,都能适配,对于没法做官方上架的应用来说,是目前最合适的方案,只要不贪便宜找那种几十块一个月的无证书池小作坊,大部分时候都能稳定使用,掉签补签也都很方便,完全能满足大部分开发者和运营的需求。