我玩iOS签名机制快六年了,从最早帮朋友做小工具需要分发,到现在帮不少中小团队做签名落地,见过太多新手因为不懂规则踩坑,也经历过无数次掉签的崩溃,今天就把我这些年摸出来的经验整理出来,给需要的朋友做个参考。
作为闭源系统,iOS对所有安装运行的应用都有强制签名要求,说白了IPA签名的本质,就是拿到苹果官方授权的证书,给你的应用包加上合法的身份标识,让系统校验通过之后才能打开。说到设备签名逻辑,其实核心就是权限授予:苹果的开发者体系里,不同类型的账号对应不同的分发权限,证书就是权限的载体,我们给IPA重签名,就是把证书里的授权信息写入应用的签名区块,系统启动应用的时候第一步就是校验这个签名,如果签名有效、权限匹配,就能正常运行,否则直接闪退或者打不开。就算是H5封装的应用,只要打包成IPA格式要装在iOS上,就必须走这一步签名流程,没有例外。
说到证书分发原理,苹果把开发者账号分为四个大类,分别是个人开发者、公司开发者、企业开发者,不同类型对应完全不同的分发权限:个人和公司开发者账号只能做最多100台设备的内测分发,想要公开分发给所有用户,只能走AppStore上架这条路,而企业开发者账号的核心权限就是给企业内部员工分发内部应用,不需要上架AppStore,也不需要绑定每台设备的UDID,理论上可以无限分发,这也是我们做企业签名的基础。现在很多做H5封装的开发者,把H5页面封装成IPA包之后,往往因为资质、内容、运营方向等问题过不了AppStore审核,就只能走签名分发这条路,我自己做的第一款应用就是这样,一个面向摄影爱好者的私人滤镜参数管理工具,内容完全合规,但是因为涉及本地文件存储和加密,需要对应的网安资质,我一个个人开发者哪来的资质,三次上架AppStore全被拒,没办法才开始折腾各种签名。
这些年和苹果的风控规则打交道最多,就是Apple ID风控这块,我最大的感受就是苹果的风控一年比一年严,不管是做企业签名还是TF签名,账号风控都是决定稳定性的核心。最早我做TF签名的时候,TestFlight作为苹果官方的内测分发渠道,稳定性本来很高,那时候随便买几个共享Apple ID就能上传包,很少被封,现在完全不一样了:苹果的风控系统会持续检测每个Apple ID的行为,如果你一个ID短时间内上传多个测试包、绑定设备数量过多、登录IP频繁变换,直接就会被标记风控,轻则无法上传新包,重则直接封号,封号之后对应的所有TF测试包都会失效,用户根本打不开。我三年前就踩过这个坑,当时找便宜服务商做的TF签名,用的就是一堆被风控标记的共享ID,不到两个月ID全被封,两百多个种子用户全用不了,损失了大半核心用户,那个坑现在想起来都肉疼。哪怕是做企业签名,苹果也会对注册企业证书的Apple ID做风控,如果同一个法人信息注册多个企业账号,或者账号登录行为异常,都会被标记,对应的证书掉签概率会提升好几倍,现在很多小渠道的证书动不动就掉,多半就是账号本身已经被苹果盯上了。
接下来聊聊大家问得最多的独享证书和共享证书,这两种我都用了无数次,使用感受差得不是一点半点。共享证书就是服务商把一个企业证书分给几百上千个客户共用,所有客户的IPA包都用同一个证书签名,优势就是价格极低,我见过最便宜的共享签名一个月只要9.9元,很多新手刚入门一听价格就心动了,但是坑真的太大了。因为只要这个证书里有一个客户签的是违规应用,比如赌博、色情、诈骗类app,被用户举报到苹果,苹果直接就会吊销整个证书,所有用这个证书签的app全部掉签,不管你的应用是不是合规,都会跟着遭殃。我最惨的一次就是用了共享证书,整个证书里混了一个赌博app,被举报之后证书被吊销,我一百多个正常用户的应用全打不开,我花了整整一周才安抚好用户,还流失了超过一半的活跃用户,那个教训真的记到现在。
而独享证书就是整个证书只给你一个人用,所有签的都是你自己的应用,不会被其他客户牵连,价格自然比共享贵很多,我现在用的独享企业签名,一年四千多,平均下来每个月不到四百,比普通共享贵了快十倍,但是稳定性真的天差地别。关于不同渠道的价格,我前前后后换了快十个不同渠道的签名服务,最大的感受就是价格和稳定性绝对成正比:9.9元一个月的,基本是拿到二手证书就卖,掉签就跑路,找客服都找不到;50-100元一个月的共享签名,掉签倒是会给补,但是平均一周掉一次,补一次要等大半天,天天折腾掉签根本没心思做产品;几百块一个月的独享,正规渠道的,基本都是自己合规注册的企业账号,养号很久才拿来用,掉签概率低很多,掉了也能在几小时内补签,服务有保障,贵出来的钱其实买的就是稳定和省心。
去年我专门花了三个月做了稳定性实测,把同一个我做的H5封装IPA包,分别做了共享企业签名、独享企业签名、TF签名,分给三个各100人的用户测试群,记录下来掉签频率和用户流失率,结果很能说明问题:共享企业签名组,三个月一共掉了四次,平均每个月掉1.3次,每次掉签都需要用户重新扫码安装,很多用户嫌麻烦直接就删了,最后三个月下来用户流失了68个,投诉率超过60%,绝大多数用户都不愿意再用;独享企业签名组,三个月只掉了一次,还是因为我更新版本的时候加了个外链跳转被误举报,苹果吊销了证书,服务商当天就给换了新的独享证书重新签名,用户重新安装一次之后就一直稳定用到现在,最后三个月用户流失只有4个,投诉率只有3%,绝大多数用户从来没遇到过打不开的问题;TF签名组,因为是苹果官方的内测分发,三个月一次都没掉过,稳定性确实不错,但是TF也有自己的问题:首先每个测试链接最多只有10000个下载额度,用户超过一万就要重新上传,其次TF的有效期只有90天,到期必须重新提交审核,最重要的是,TF签名不支持ios企业签名应用内更新,你更新版本必须重新提包,用户要跳转到TestFlight才能更新,对于我这种需要每周迭代功能、更新内容的产品来说太不方便了,而企业签名就没有这个限制,我做的应用可以直接在应用内检测新版本,用户点击就能直接更新,整个流程不用跳出应用,体验顺畅太多,这也是我最终选择独享企业签名的核心原因。
对比下来,AppStore当然是稳定性最好的,用户直接搜索下载,不会掉签,也不用额外操作,但是审核门槛太高,对于很多没有资质、做内部办公应用、或者内容不符合上架要求的开发者来说,根本没法走这条路,所以签名分发才会有这么大的市场需求。我也遇到过很多常见的问题,比如H5封装的IPA签完名之后闪退,大多是因为签名配置不对,或者证书本身被风控,我刚入门的时候就遇到过好几次,折腾半天才发现是共享证书本身有问题;还有用户安装企业签名应用之后打不开,提示“未受信任的企业开发者”,需要用户手动去设置里信任证书,很多新手用户不会操作,我后来专门做了一步一步的图文教程放在下载页,才减少了很多重复咨询,而TF签名就不用这个步骤,这也是TF不可替代的优势。
这么多年折腾下来,我最大的总结就是:如果只是临时内测几个用户,选便宜的共享签名或者TF签名就行,成本低够用;如果是正式给用户用,需要长期运营,一定要选稳定的独享证书,虽然贵点,但是不用天天提心吊胆等掉签,省下来的时间精力用来运营产品、服务用户,比什么都值。选签名永远是稳定优先,贪便宜吃大亏的例子,我这几年见得太多了。