我接触苹果签名已经快六年了,最早是帮创业的朋友做内测应用分发,那时候App Store审核严,朋友的产品还在快速迭代,不想急着上架,我就一头扎进了签名这个圈子,这么多年踩过坑也见过各种套路,今天就把我真实的深度使用经验分享给大家。
先从最基础的签名技术原理说起,苹果iOS系统的封闭性决定了所有能正常安装的应用,都必须经过苹果信任的签名验证,没有经过合法签名的IPA包,iOS系统会直接拦截,根本无法安装。IPA签名的本质,就是利用苹果授予开发者身份的证书,给未上架App Store的IPA包加上符合系统验证规则的信任签名,让系统认可这个应用,可以正常安装到手机上。不管是企业签名、超级签名还是TF签名,核心原理其实都是这个,只是用的证书类型和分发规则不一样而已。
接下来是很多人都听过但不太懂的证书池机制,我最早做签名的时候,都是自己单独买个人开发者证书,一个证书只能绑定100个UDID,用户多了就得买好多个证书,管理起来特别麻烦,后来行业里慢慢就出现了证书池机制,就是服务商批量收集大量不同主体的个人开发者证书或者企业开发者证书,统一存储调度管理,当某一个证书因为各种原因被苹果吊销或者出现掉签问题的时候,自动从证书池里调出其他可用的证书给应用重签,不会影响用户的正常使用。简单来说,证书池越大,可用的备用证书越多,整体签名的稳定性就越高,我现在合作的做了五六年的老服务商,证书池里有上千个个人开发者证书,就算同时掉几十个,也能马上补上来,根本不会出大面积断用的问题。
再说说大家常听到的UDID绑定,UDID就是苹果手机唯一的设备识别码,苹果的Ad Hoc模式签名,不管是超级签名还是TF签名用到的测试资格,都要求绑定设备的UDID,只有绑定了UDID的设备才能安装对应的应用。个人开发者的Ad Hoc签名最多支持绑定100台设备,而苹果提供给TF测试的资格,每个开发者账号最多可以绑定10000台测试设备,刚好满足大部分中小应用的内测和日常使用需求。和Ad Hoc不同,企业签名用的是In-House模式,不需要绑定UDID,任何设备都可以安装,这也是企业签名最早火起来的原因,但是不需要绑定UDID也意味着更容易被苹果检测,违规滥用的话更容易被吊销证书。
关于重签流程,我自己给客户重签不下几百次了,标准的重签流程其实很清晰:首先拿到客户提供的原始IPA包,如果是加过壳的老包,先做砸壳处理,提取出里面的应用内容,然后根据我们选择的签名类型,匹配对应的证书和描述文件,删除IPA包里面原来的签名信息和旧的描述文件,把新的描述文件放进包里,再用codesign工具重新给所有的二进制文件签名,验证签名合法性没有问题之后,再重新打包成新的IPA包。整个过程熟练的话,一个应用十几分钟就能搞定,如果是H5封装出来的新IPA包,流程其实差不多,封装好的包本身没有签名,直接用我们的证书签就可以。我刚入门的时候经常踩坑,比如证书和描述文件不匹配,或者签名的时候漏签了某个动态库,导致用户装不上,现在熟了,出错率不到1%,大部分都能一次签成功直接安装。
其实所有应用最稳定的分发方式肯定是官方上架App Store,上架之后用户直接从App Store下载更新,永远不会掉签,安全性和稳定性都是最高的,但是官方上架的审核规则非常严格,很多应用比如企业内部定制应用、内测迭代中的产品、一些符合政策但是不符合苹果上架规则的工具类应用,根本过不了审,所以才会需要各种签名方案来实现分发,官方上架是首选,但不是所有应用都适合,这点大家一定要清楚。最近这两年H5封装的需求越来越大,很多中小商家、企业做内部应用或者小型服务,不想花大成本开发原生应用,直接把做好的H5网页封装成IPA包,然后签名就能安装使用,成本只有原生开发的十分之一都不到,上线速度快,更新也方便,我每个月都能接四五个H5封装加签名的单子,大部分客户用下来都很稳定,很少出问题,只有一次一个客户的封装应用里放了违规内容,被苹果检测到吊销了证书,掉了签,后来修改了内容换了证书重新签就好了。
接下来就是大家最关心的超级签名与企业签名的真实稳定性对比,还有目前不同渠道的真实价格,我用了这么多年,说点不掺水的真实感受,不要听网上瞎忽悠说哪个一定稳哪个一定差,其实都是分情况的。首先说价格,我给大家说一下当前正规渠道的透明市场价:企业签名分两种,共享证书的企业签名,就是很多个应用共用一个企业证书,价格很便宜,一般一个月30到80元不等,适合几个人或者几十个人的小范围内测,用户少,掉了影响也不大;独立证书的企业签名,就是一个企业证书只给几个甚至一个应用用,价格一般一个月200到500元,根据应用类型不同价格有差异,稳定性比共享签名高很多。超级签名一般都是按下载量计费,一个有效下载1元到3元不等,很多正规渠道做包量套餐,一千个下载只要800到1000元,平均下来不到一块钱一个,适合用户增量比较平稳的应用,用户多就多买下载量,计费灵活不浪费。TF签名价格差异不大,一般合规应用包月是300到800元,包年的话2500到3500元,按下载量算的话一个下载3到5元,比超级签名贵一点,但是稳定性高很多,而且TF苹果签名合规性本身就是所有签名类型里最高的,本身是苹果官方推出的内测服务,不存在违规风险。官方上架的话,自己申请苹果开发者账号,年费是99美元,提交审核免费,找代办的话,根据应用难度,一般500到2000元不等,过不了审大多会退大部分费用,这个行业现在已经很透明了。
说回稳定性,我真实用下来,80%以上的正规签名,只要应用本身合规,都是非常稳定好用的,很多人遇到频繁掉签,大多是贪便宜买了低价的共享签名,或者应用本身违规触碰了苹果的规则。我对比下来,稳定性从高到低大概是:TF签名>优质证书池的超级签名>独立企业签名>共享企业签名。TF签名本身是苹果官方的TestFlight内测服务,本来就是苹果开放给开发者做内测分发的渠道,合规性有保障,只要应用本身不违规,几乎不会掉签,我手里二十多个TF签名的应用,跑了一年多,只有两个因为被恶意举报违规掉签,其他都一直正常运行,比其他类型稳定太多。然后是证书池大的超级签名,我自己用超级签名做的个人测速工具,用了两年多,只掉过三次,都是因为某个证书绑的设备太多被苹果检测到,服务商当天就从证书池调了新证书重签补好了,几乎不影响正常使用,大部分时候都很稳。独立企业签名我也用了很多,给一个本地企业做的内部CRM应用,用独立企业签名已经三年多了,一百多个员工每天都在用,只掉过一次,还是证书到期续费换证书,正常使用从来没出过问题,只有共享企业签名确实不稳定,我早年贪便宜用过,一个月掉三四次,太折腾,现在早就不用了。
我也遇到过掉签、补签、证书出问题的情况,最早刚入行的时候找了一个小服务商,证书池只有十几个证书,某天苹果批量吊销违规证书,一下子掉了我十几个应用的签,服务商好几天都补不上,最后还是我转了大服务商才搞定,从那之后我就只找做了三年以上的老服务商,证书池大,掉签之后几个小时就能补完,很少出大问题。还有一次一个客户做活动推广,一天新增了三千多下载,超级签名那边单个证书设备超标被苹果检测到,掉了一千多个用户的签,服务商当天就换了三个证书重签,半天就恢复正常了,也没影响推广节奏。
整体来说,这么多年我做过的签名项目,八成以上都是从上线到下线从来没掉过签,用户体验和上架应用没区别,非常好用,不管是企业内部用还是小范围推广,都能完全满足需求,只要找对正规渠道,选对适合自己用户量和应用类型的签名方式,稳定性完全够用,不用听网上贩卖的焦虑说签名全是坑,只要找对方法,苹果签名完全可以稳定长期使用。