我做iOS相关开发和签名研究快十年了,从最早的iOS4时代就开始跟苹果的签名机制打交道,踩过的坑没有一百也有八十,见过太多开发者和中小企业因为选不对签名,辛辛苦苦做出来的应用因为掉签流失大半用户,今天就以我自己的经验,把大家常问的苹果签名相关问题整理出来,从底层逻辑到实际选择,给大家做个参考。
先从最基础的设备签名逻辑说起,很多人只知道iOS应用需要签名才能装,但不知道为什么,其实iOS是闭源生态,苹果为了管控所有安装到设备上的应用,内核层面就加了签名验证机制,任何没有经过苹果授权签名的应用,都无法启动运行。而我们常说的IPA签名,本质就是把我们做好的IPA安装包,和苹果开发者平台颁发的合法证书做绑定,让苹果的验证服务器认可这个应用的合法性。具体到设备层面的逻辑,其实分两种,一种是需要绑定UDID的签名,比如个人开发者测试签名、TF签名,都是要把设备的唯一识别码UDID添加到开发者账号的设备列表里,再把所有授权设备的UDID写入描述文件,打包签名后,苹果验证的时候就能确认这个设备是被授权的,允许应用启动;另一种是企业开发者证书签名,不需要绑定单个设备的UDID,因为苹果给企业开发者账号的权限就是给内部任意设备分发应用,所以只要证书有效,所有设备都能通过验证。我刚玩签名的时候踩过一个低级坑,那时候给客户做测试签名,加UDID的时候漏了客户老板那台设备,结果打包完客户安装之后一直闪退,我们找了三天bug,从代码查到服务器,最后才发现是UDID没加,重新签名之后立马就好了,这件事也让我明白,签名逻辑里任何一个小环节出错,整个应用都用不了。
接下来聊证书分发原理,我们说的证书,本质上是苹果用自己的根私钥,给我们开发者身份做的电子签名凭证,里面包含了我们的开发者信息、授权权限、绑定的App ID等内容,只有苹果认可的证书,才能用来给IPA签名。分发的路径其实分好几种,最正规的就是AppStore分发,开发者把签好名的IPA上传到AppStore,苹果审核通过之后,会重新用苹果自己的证书给应用签名,再分发给用户,所以只要不上架被下架,AppStore里的应用永远不会掉签,是最稳定的分发方式。但问题是AppStore审核规则非常严格,很多应用比如企业内部办公应用、针对特定用户的工具应用,还有大多数纯H5封装的应用,都不符合上架要求,根本没法通过审核,所以才催生了各种第三方签名分发的方式。另一种就是企业证书分发,用企业开发者账号的证书给IPA签名之后,把安装包放到自己的下载服务器,做一个下载链接就能分发,用户点击链接就能直接安装,不需要经过苹果审核。还有一种就是TF签名,也就是TestFlight签名,本质是利用苹果官方提供的应用测试渠道,把我们的应用作为测试应用放到TestFlight平台,用户通过邀请链接跳转到TestFlight就能下载安装,这个是苹果官方认可的分发方式,规则比AppStore松很多,不容易掉签。很多人做H5封装应用,就是把移动端网页打包成IPA格式之后,通过签名分发出去,让用户能像原生应用一样从桌面打开,不用每次都打开网页,体验提升很多,而H5封装最核心的需求就是签名稳定,不然用户用着用着打不开,体验反而更差。
聊完基础原理,再说说大家最关心的Apple ID风控问题,这几年苹果对开发者账号的风控越来越严,封号掉签的概率比十年前高太多了,我总结下来,苹果的风控核心就是看账号的使用行为是否异常。什么样的行为容易触发风控?比如批量注册的Apple ID、黑产渠道买来的盗号、一个账号短时间内签几十个上百个应用、一个个人开发者账号绕过限制绑定几千台设备、签的应用涉及违规内容被用户举报,这些都会触发风控,一旦账号被风控封号,所有用这个账号生成的证书都会被吊销,所有用这个证书签的应用都会立刻打不开,也就是我们常说的掉签。我自己就踩过这个大坑,2019年那会,我刚出来接签名业务,图便宜找了一个渠道拿共享证书,那个证书用的账号就是被苹果标记过的二手号,不到一周就触发风控被封了,我当时给二十多个客户签了应用,全部掉签,我一个个给客户道歉,免费给客户重新做签名,前两个月赚的钱全部亏进去还倒贴,从那之后我就再也不敢碰来历不明的账号了。现在我对风控的总结就是,只要用干净的、自己注册的账号,不签违规应用,控制每个账号的签名数量,就基本不会触发风控,苹果不会无端封号,大部分封号都是因为使用行为异常。
接下来聊聊大家问的最多的独享证书和共享证书的区别,以及我这么多年用下来的感受。共享证书就是很多个开发者、很多个应用共用同一个开发者账号下的证书,你付几十块钱就能把你的IPA签上去,好处就是价格非常便宜,一般一个应用一个月只要几十块,甚至还有几块钱引流的;而独享证书就是整个证书只有你一个人用,整个账号只给你一个人的应用签名,价格比共享贵很多,一般一个应用一个月几百块不等。这么多年我用下来,最大的感受就是共享证书除了便宜,几乎没有任何优点,稳定性差到离谱。首先,共享证书里只要有一个人签了违规应用,被苹果查到封号,所有在这个证书里的应用全部跟着掉签,你哪怕签的是正规的企业内部应用,也跟着遭殃;其次,很多共享证书一个账号签几十上百个应用,本身就很容易触发苹果风控,掉签是早晚的事。我去年统计过我试过的五个不同渠道的共享证书,平均稳定时间不到15天,最短的一个三天就掉了,最长的也不到一个月。而独享证书就不一样,整个证书只有你自己用,你只签你自己的正规应用,只要不违规,基本不会触发风控,稳定性高很多,我现在自己用的一个独享企业证书,已经稳定快一年了,从来没掉过签。
聊完区别,说说不同渠道的价格感受,这些年我换过不下十几个签名渠道,从淘宝几块钱的共享签,到个人工作室几十块的共享签,再到大平台几百块的独享签,价格差的非常多,我最深的感受就是一分钱一分货,稳定才是最大的性价比。很多人一开始算帐,说共享签一个月几十,独享一个月几百,差了十倍,太不划算,但是掉一次签,你要通知所有用户重新下载,要是做盈利性业务,掉一次签流失的用户,价值远不止那点差价。我之前有个客户,自己做了一个本地商家的H5封装应用,为了省几十块钱,找了一个九块九一个月的共享签,结果不到一周就掉签了,他那时候已经推广了一千多个用户,一半多用户因为打不开应用就再也没回来,损失了好几个月的推广费用,后来找我做了独享TF签名,才慢慢把用户拉回来。还有一个客户找个人微商交了一年的共享签费用,不到三个月掉签,微商直接拉黑跑路,几千块钱打了水漂,最后还是来找我重新做签名。我自己做过一个三个月的稳定性实测,分别选了四种不同类型的签名,签同一个H5封装的IPA,记录掉签情况和安装成功率:九块九淘宝共享签,第三天就掉签,平均安装成功率只有62%;一百块一个月的平台共享签,第十二天掉签,安装成功率78%;三百八十块一个月的独享企业签,三个月没有掉签,安装成功率96%;两百八十块一个月的TF签名,三个月也没有掉签,安装成功率98%。这个实测结果也验证了我的感受,越是便宜的共享签,稳定性越差,只有独享和TF签名能保证长期稳定使用。
最后给大家总结一下选择签名的思路,如果你的应用符合AppStore上架要求,那肯定优先上架AppStore,官方分发永远是最稳定的;如果没法上架,那优先选TF签名,TF签名是苹果官方的测试渠道,风控松,不容易掉签,价格也比独享企业签便宜,大部分H5封装的应用、测试应用都能做TF签名;如果因为各种原因没法做TF签名,那一定要选独享证书,不要贪便宜选共享证书,掉签带来的损失远大于你省的那点签名费。我玩了十年iOS签名,最大的感悟就是,苹果的签名机制本质就是生态管控,只要我们遵守规则,选对适合自己的签名方式,就能保证应用稳定运行,毕竟应用做出来就是给用户用的,连打开都做不到,再好的功能也没有意义。