我玩iOS签名分发快六年了,前前后后踩过不下百个坑,从最早的个人签名到现在的企业签、TF内测,几乎所有玩法都实测过,今天就以第一人称把我摸透的规则、踩过的坑都讲出来,给想要做iOS应用分发的朋友做个参考。 首先从最基础的设备校验逻辑说起,很多人只知道签名之后就能安装,却不知道IPA授权启动的整个校验流程。 我之前专门抓包、逆向过不同签名类型的IPA包,总结下来,不管是哪类签名,第一步都是iOS系统本身的校验:应用启动后,首先会读取设备的唯一标识UDID,先核对签名文件里的授权信息,如果是AppStore下载的包,会直接和苹果服务器的授权信息比对,绑定下载用的Apple ID,只要应用不违规下架,就永远能打开; 如果是TF内测的包,也是走苹果官方的TestFlight授权校验,UDID在测试名额列表里就能正常启动,几乎不会出问题; 而企业签名的包,苹果本身不对单个设备做校验,苹果只校验证书本身是否有效,额外的设备校验都是签名服务商自己加上的——因为苹果企业证书虽然明面上没有设备数量限制,但实际上苹果有隐性风控,单证书激活设备超过一万台就很容易被封,所以服务商都会自己搭校验服务器,安装和启动的时候都要核对UDID是否在允许列表里,超过设备限额就会提示未授权无法打开。
这里说一个我亲身遇到的小问题:去年我帮客户做一个线下推广用的H5封装商城IPA,用的是小服务商的企业签名,当时推广活动一开始,短短二十分钟就有七十多个人点击分发链接下载,直接触发了企业签名应用分发链接访问频率限制,链接直接被锁,半天打不开,白白损失了大半意向用户。 后来我才知道,几乎所有中小签名服务商都会给分发链接做访问频率限制,小渠道一般单链接一小时访问超过30次就会临时锁链,中等渠道一般限制在100次左右,哪怕是大渠道也会做500次左右的上限,目的就是防止爬虫抓取、防止苹果扫到链接,同时也能节省服务器带宽,所以如果要做推广,一定要提前和服务商沟通放开限制,不然很容易出问题。 接下来讲证书分发链路,这个环节是很多人掉坑的重灾区。
正规的一级分发链路应该是这样的:开发者从苹果官方申请企业开发者证书(每年给苹果交299美元),拿到证书之后直接存在自己的签名服务器,用户提交IPA包之后直接在自己服务器完成签名,分发链接也是自己的,整个链路只有服务商和用户两个节点,中间没有转手。 但现在市面上至少七成的签名服务是二级甚至三级分销:很多小代理商从一级渠道拿共享证书的名额,再加价卖给终端用户,每多一层代理,就多一层校验节点,也多了一层加价。 我之前实测过一个9.9元的共享企业签,签名完成之后,我抓包看启动请求,发现启动的时候要依次经过三个不同IP的校验服务器,只要其中一个代理商的服务器挂了,整个应用就会提示IPA授权失败无法打开,而且链路越长,信息泄露的风险也越高,你的IPA包很容易被中间节点截留盗版。
尤其是很多做H5封装的朋友,图便宜找小代理商签名,最后不仅经常掉签,还遇到过H5支付接口被劫持的情况,钱都进了第三方的口袋,这个坑真的要注意。 然后说大家都很关心的Apple ID风控规律,这个我实测了两年多,总结了几个百分百触发风控的场景,给大家参考。 第一,一个Apple ID不要在超过三个不同IP的设备上登录,我之前为了省事,把一个个人ID给三个同事共用,分别在三个不同城市登录,不到一周就触发风控,ID直接被锁,需要验证身份才能解锁,里面绑定的支付信息也没法用。
第二,刚注册的Apple ID一定要养号至少7天才能用来签名或者上传TF,刚注册就批量签名、上传包,百分百触发风控,我见过很多新手做TF内测,上传一直失败,就是因为用了刚注册的ID,苹果直接判定为风险账号,不给通过。 第三,一个ID不要一天内签名超过5个IPA包,也不要用来同时上架AppStore和签企业同名包,我之前帮朋友做项目,他的应用已经上架AppStore了,想用同一个ID签一个企业测试包做内部调试,结果不到一周,不仅企业证书被封,AppStore上的正式包也被牵连下架,苹果的风控关联比大家想的要严格得多,用过的ID一定要分开,上架的归上架,签名的归签名。 还有共享Apple ID绝对不要用,几十个人共用一个ID,今天这个IP明天那个IP,不出三天肯定被封,连带你签的应用也会掉签。
接下来讲讲独享证书和共享证书的区别,我专门做了三个月的对比测试,差别真的很大。 共享证书就是几十上百个开发者共用一张企业证书,谁都可以往上面签包,价格很便宜,一般几块到几十块钱一个月。 独享证书就是一张证书只给你一个人用,所有包都是你自己的,价格一般一个月五百到一千五不等。
实测下来的区别主要有三点:第一,掉签概率,我测试的五个共享证书,最短的一天就掉了,最长的也就21天,平均掉签周期不到10天,大部分掉签都不是你的问题,而是证书上其他人签了违规包,比如赌博、色情类的应用,苹果扫到之后整个证书一起封,所有人的包都得掉,我那个测试的正常H5封装包,就是因为同证书有个违规包被封,跟着掉了,真的很无辜。 而我测试的独享证书,只要我自己不签违规包,不超过一万台设备的隐性上限,六个月都没掉过,稳定性差了不止一个档次。 第二,授权稳定性,共享证书服务商经常换证书,动不动就调整校验规则,哪怕证书没被封,也有可能突然提示IPA授权失败,而独享证书只要证书不变,授权一直有效,不会出莫名其妙的问题。
第三,访问限制,共享证书的服务商本身带宽和服务器资源就有限,很容易触发企业签名应用分发链接访问频率限制,稍微推广一下就锁链,而独享证书一般都会给你放开更高的访问限额,只要不是违规推广,很少会锁链接。 说完区别,再讲讲我做了六个月的长期稳定性测试,我选了四种最常见的分发方式做对比:分别是AppStore正式上架、TF内测、独享企业签名、共享企业签名。 结果其实挺符合预期的:AppStore肯定是最稳定的,只要你不违规,永久可用,用户信任度也最高,缺点就是审核严,很多H5封装的应用、内部测试应用根本过不了审,上架成本也高。
第二名是TF内测,TF是苹果官方的内测渠道,稳定性比企业签高很多,只要不违规,90天有效期内几乎不会掉,也不会触发苹果的证书风控,缺点就是每个版本最多一万个测试设备,下载需要跳转到TestFlight,部分用户会嫌麻烦,适合中小体量的应用和测试应用。 第三名是独享企业签名,稳定性比TF稍差,但是不需要用户跳TestFlight,可以直接点击链接安装,也没有一万台的设备上限(只要不超过苹果隐性的一万台风控线就行),适合内部应用、大体积的测试应用,缺点就是价格比TF高。 最不稳定的就是共享企业签名,平均不到10天掉一次,动不动锁链接,只适合用来做临时测试,绝对不适合用来给用户分发。
最后聊聊不同渠道的价格感受,我前前后后对比过二十多个渠道,从淘宝到专业签名平台再到私域代理商,价格差真的很大。 最便宜的就是共享企业签,几块到二三十块钱一个月,看起来很划算,实际上算下来成本更高,因为掉一次签就要让所有用户重新下载安装,用户流失率至少在八成以上,频繁掉签的损失远远超过签名本身的成本。 然后是TF签名,一般是按次收费,五六十到两百块钱一次,包过审,有效期90天,到期重新发一次就行,性价比其实很高,比共享企业签划算太多,适合大多数中小开发者。
然后是半独享证书,就是一张证书两三个用户用,一个月一两百块钱,掉签概率比共享低很多,适合小团队做内部测试用。 最贵的就是全独享企业证书,一个月五百到一千五,成本确实高,但是稳定性有保障,适合长期分发的内部应用。 至于AppStore上架,自己上架不用花钱,找代上架的话,从几百到几万不等,H5封装的应用因为容易被拒,代上架价格一般都在一千以上,过不了还会退款,这个大家可以根据自己的需求选。
其实总结下来,iOS分发没有绝对完美的方案,能上AppStore尽量上,毕竟官方渠道最稳,要是上不了,中小体量优先选TF内测,长期做内部分发就选独享企业签,绝对不要贪便宜用共享签,用之前一定要提前和服务商沟通好企业签名应用分发链接访问频率限制,推广前放开限额,避免活动掉链子,只要摸清楚苹果的规则,其实很少会出大问题。