玩iOS圈内的签名分发快五年了,从最早几十块帮人签个IPA,到现在帮不少中小企业做H5封装的内部APP签名分发,踩过的坑能堆一箩筐,最近还有不少新手私我问苹果签名证书手动信任到底是怎么回事,各种证书怎么选,索性把我这些年摸出来的经验整理出来,给需要的朋友做个参考。

首先得说清楚最基础的设备签名逻辑,苹果闭源的特点决定了,只有经过苹果授权签名的应用,才能在iOS设备上正常安装打开,说白了苹果就是信任背书方,你要让系统认你的APP,就得有苹果发的“许可证”,这个许可证就是我们说的签名。不管是IPA签名还是其他类型的签名,本质都是把你开发或者封装好的未签名安装包,用苹果官方颁发给开发者的证书做一次加密签名,让iOS系统校验的时候能查到这是苹果授权过的应用,才会允许你打开。我最早帮朋友做H5封装的时候,就踩过这方面的坑,当时把H5打包成IPA包之后,直接发给用户安装,结果所有用户都装完打不开,提示“无法安装”,后来才明白,没有签名的IPA包,iOS系统根本不认,哪怕你打包做好了也没用,必须走签名这一步,而上AppStore的应用是苹果官方直接签名,所以不用我们自己弄,这也是为什么很多不想上或者上不了AppStore的应用,才需要找第三方做签名。

接下来说证书分发原理,苹果现在给开发者开放的证书类型主要分几种,一种是给正式上架AppStore用的发布证书,一种是给内测用的开发证书,还有一种是给企业内部分发用的企业证书。证书分发的核心逻辑其实就是苹果的信任链,苹果系统内置了苹果自己的根证书,我们拿到的开发者证书或者企业证书,都是由苹果的根证书颁发的,所以当你用证书给IPA签名之后,iOS系统就能顺着信任链验证,确认签名合法,就会允许应用运行。不同的分发路径对应的原理也不一样,比如我们常说的TF签名,也就是TestFlight签名,本质是苹果官方提供的应用内测分发渠道,你的应用上传到TestFlight之后,是苹果官方直接签名分发,所以用户从TF下载的时候不需要做苹果签名证书手动信任,系统直接就信任了,这也是TF签名稳定性高的核心原因;而企业签名分发,是用企业证书给IPA签名之后,直接把安装包放到下载链接,用户下载安装之后,需要手动去系统设置里信任对应的证书,才能打开应用,这个步骤是苹果系统强制要求的,很多新手不知道,装完打不开就以为签名掉了,其实就是缺了这一步。

说到这就不得不提现在越来越严的Apple ID风控,这也是签名稳定性最大的影响因素,我最早入行的时候,苹果对Apple ID和证书的管控没这么严,那时候一个证书能用一两年都没事,现在完全不一样了,苹果的大数据风控系统,能从IP、设备、身份信息、签名内容、用户举报等多个维度判断你的证书是不是合规,稍有不慎就会触发风控,直接封证书封ID,所有签过的应用直接掉签打不开。我印象最深的一次,是刚入行第二年,那时候贪便宜,自己注册了五个Apple ID开开发者权限,结果用同一个WiFi、同一个手机号做关联信息,不到三天五个ID全被苹果封了,一个都没剩,损失了大几百的开发者年费不说,当时手里签的三个客户的应用全掉了,赔了人家不少违约金。后来我才摸清楚,哪些情况容易触发风控:同一个IP短时间注册多个Apple ID、同一个身份信息绑定多个开发者账号、频繁在不同设备切换登录ID、短时间添加大量UDID、证书里签名了违规应用(比如色情、赌博、盗版这类)、被用户举报,只要触发其中一项,苹果很容易就盯上你,直接封证书。而且现在苹果的风控是关联处罚,只要同一个身份下有一个证书违规,其他所有同身份的证书都会被牵连,一死死一片,所以现在我做签名,都是一个身份对应一个ID一个证书,分开IP,新ID都要养半个月以上才用来签名,绝对不敢瞎操作。

很多新手分不清独享证书和共享证书,我两种都用了好几年,给大家说说区别和我的价格感受。共享证书说白了就是一个证书卖给几十个上百个客户,所有客户的IPA都签在同一个证书里,商家靠走量赚钱,所以价格特别低,现在市场上共享签名一般二三十块钱一个月,贵一点的也就一百多,看起来特别诱人,我最早也用共享签名给小客户做,结果用了才知道,坑太大了,只要其中有一个客户签了违规应用,被苹果检测到封号,整个证书上所有客户的应用全掉签,相当于一颗老鼠屎坏了一锅粥。我之前有个客户做618活动推广的APP,用的共享签名,刚投了八万多朋友圈广告,第二天证书就因为里面有个违规APP被封了,所有用户都装不了,活动直接黄了,我赔了客户小两万才了结这件事,从那之后我再也不给正式客户用共享签名。而独享证书就是整个证书只给你一个客户用,整个证书里只有你自己的应用,不存在别人违规牵连你的情况,稳定性自然高很多,价格当然也比共享贵,我现在用的独享企业证书,一年四千多,平均下来每个月不到四百,看起来比共享的二三十贵很多,但是算算账,共享签名掉一次签损失的都不止这点钱,这点差价真的不算什么。现在市场上价格很乱,TF签名一般是按包签,一个包两三百到上千不等,签完能稳定用三到六个月,只要不违规基本不会掉,适合用户量一万以内的应用;UDID个人签名按设备数收费,一个设备五六块钱,适合小范围内测;独享企业证书一般是大几百一个月或者几千一年,没有用户数限制,适合大用户量的长期应用,我觉得这个价格其实很合理,毕竟稳定就是最大的性价比,天天掉签折腾,不仅损失客户,还砸自己的招牌。

去年我为了选靠谱的证书,专门做了三个月的稳定性实测,把同一个我封装好的内部办公IPA(做H5封装的测试包,完全合规没有违规内容)分别放到四个不同渠道签名,全程记录掉签情况:第一个是99块钱三个月的共享企业签名,第一个月掉了3次,每次掉了商家要一天多才给重签,第二个月掉了5次,第三个月直接证书被封,商家都联系不上了,直接废掉;第二个是我现在用的独享企业证书,三个月只掉过一次,还是因为我手贱,用ID登了新设备没注意,触发了风控,掉签之后商家不到两个小时就给我重新签好了,之后到现在快一年了,再也没掉过;第三个是TF签名,三个月全程没有任何问题,链接一直能打开能下载,一次都没掉,因为本来就是苹果官方的,只要不主动删,就不会掉,唯一的问题就是TF签名最多只能添加一万个测试用户,如果用户量超过一万就没法用了,而且上传的时候也要过苹果的审核,虽然比AppStore审核松很多,但是如果有违规内容也过不了;第四个是个人UDID超级签名,三个月掉了两次,都是因为其中一个个人ID被封,掉了一百多个设备的签名,还要重新添加,折腾半天。实测下来,稳定性排序就是TF签名>独享企业证书>个人超级签名>共享企业证书,这个排序我现在一直认可,真的是实打实测出来的结果。

除了之前说的掉签、风控,还有就是苹果签名证书手动信任的问题,很多新手用户根本不知道这个步骤,装完企业签名的应用,点一下提示未受信任,就说签名有问题,我最早没在下载页写教程,一天能接几十个咨询电话,后来我把手动信任的步骤放在下载页最顶部:安装完成后,打开iOS设置→通用→VPN与设备管理→找到对应证书,点击“信任”即可打开,这下才少了很多麻烦,这个步骤是苹果对企业签名的要求,没办法省略,所以一定要提前告诉用户,不然平白多很多误会。还有一次遇到一个问题,H5封装的时候包名和别人的重复了,签名完安装的时候一直提示安装失败,查了半天才找到问题,后来每次签名前我都会先检查包名,确保唯一就不会出这类问题。

现在很多人做H5封装的APP,不想花几个月等AppStore审核,也不想交年费折腾修改,用签名分发是最高效的方式,只要选对了证书,稳定性完全能满足日常使用和业务需求,我这五六年的经验总结下来,就是一句话:便宜从来都不是第一选择,稳定才是,临时测着玩可以选便宜的共享签名,长期给客户用或者正式运营,一定要选独享证书或者TF签名,做好Apple ID的风控,提前告诉用户苹果签名证书手动信任的步骤,基本就不会出什么大问题,也能省掉很多不必要的麻烦。