作为一名做了六年iOS开发的技术爱好者,我帮不少中小创业团队做过原生应用开发,也接过大量H5封装成IPA的需求,从官方上架、TF内测到各类第三方签名授权,几乎把市面上常见的iOS分发授权方案摸了个遍。 最近半年,总有不少刚入行的朋友找我问两个核心问题:一是超级签名发票如何开具,二是怎么才能做稳定的应用授权,刚好我这三个月刚好做了两组对比实测,就结合自己的经验聊聊这个话题。 首先要讲清楚iOS应用授权校验的基本原理,不管是哪一种分发方式,本质都绕不开苹果生态的规则:只有获得苹果信任的证书签名的IPA应用,才能在iOS设备上正常安装和打开。
整个授权校验分为两层,第一层是苹果官方的系统校验:用户点击安装链接后,设备会主动向苹果APNs服务器校验证书的有效性,以及当前设备UDID是否在证书授权的设备列表中,校验不通过就会提示“无法安装”“未受信任的企业级开发者”; 第二层是很多第三方签名服务商增加的应用内校验,主要是防止应用被盗版分发,同时可以动态同步证书状态,遇到掉签也能提前提示用户重授权。 不同分发路径的授权逻辑差异很大:官方上架的应用是苹果App Store统一做授权,用户从App Store下载就能直接通过校验,不需要额外做签名授权; TF内测也就是TestFlight内测,本质是苹果官方开放的内测授权渠道,授权范围是开发者主动邀请的设备,单个账号最多支持绑定1万台UDID,单应用内测有效期90天,本身是官方背书,稳定性远高于第三方签名; 而大部分无法过审的H5封装应用、小众功能内测应用,只能选择第三方做IPA授权,核心就是绕开官方上架的审核,拿到苹果认可的安装授权。 接下来聊聊超级签名最核心的UDID绑定机制,超级签名之所以能绕开审核实现分发,核心就是用个人开发者账号的证书做签名,苹果规则里每个个人开发者账号最多可以绑定100台不同的设备UDID,只要把用户设备的UDID添加到开发者账号的设备列表中,再用该账号证书签名对应的IPA,这台设备就能正常安装打开应用。
完整的UDID绑定流程应该是动态的:用户点击安装链接后,系统先通过苹果接口获取用户设备的UDID,再从证书池里调出还有可用额度的个人账号,自动把UDID添加到该账号的设备列表,最后重新用该账号签名生成专属的安装包,用户直接下载就能安装。 我早年踩过很大的坑,当时找了一个小渠道做H5封装应用的签名,他们为了节省额度,居然静态绑定UDID,还把同一个账号绑了三百多台设备,远远超过苹果100台的限制,不到半个月苹果直接封了账号,整个证书作废,我当时两百多个活跃用户全部打不开应用,找他们补发拖了整整一周,硬生生掉了近一半用户,体验差到极点。 要解决单个账号额度不足、容易被封的问题,证书池调度就是稳定授权的核心,说白了就是服务商提前储备大量个人开发者账号的有效证书,做成一个可动态调度的资源池,核心调度逻辑有三个:一是当一个账号的100个额度用完,自动切换到下一个有额度的账号绑定新用户; 二是当某个账号被苹果封禁,自动把该账号下的所有用户标记出来,自动分配到其他可用证书做重签名; 三是把流量均匀分配到不同证书,避免单个证书签太多应用被苹果检测到异常。
我这三个月做了两组实测,一组是小渠道的小证书池,总共不到50个账号,另一组是正规大渠道的数千个账号的大证书池,三个月下来差异非常明显:大证书池的应用掉签次数只有两次,都是单个账号被封,自动调度半个小时就完成了补发重授权,用户几乎没有感知; 而小证书池的应用掉了八次,有一次整个池子近一半账号被牵连封停,整整三个多小时才恢复,很多用户等到不耐烦直接卸载了。 很多人觉得证书池就是堆账号数量,其实不对,调度逻辑才是关键,好的调度会自动隔离违规应用、自动剔除异常账号,不会把违规应用和正规应用放一个池子,避免被牵连封号。 聊完基础机制,再说说重授权操作,什么时候需要重授权? 一般是原证书掉签、用户重装系统、更换设备、UDID被苹果清理之后,原来的授权就失效了,需要重新做授权才能正常使用。
目前主流的重授权分两种,一种是自动重授权,用户只需要重新点击原来的安装链接,系统会自动检测当前授权状态,自动完成UDID重新绑定、证书重签名,用户直接下载就能用,全程不需要客服介入,也不需要额外操作,体验最好; 另一种是手动重授权,需要用户重新获取UDID发给客服,客服手动添加到证书列表,再生成新的安装包发回给用户,不仅效率低,用户体验也很差,稍微大一点的用户量根本扛不住。 对比下来,官方上架不需要重授权,用户直接在App Store更新就能用,TF内测到期后只需要重新发一次邀请就能完成重授权,比第三方签名简单很多,但缺点就是额度只有一万台,超过就没办法用了。 这次我专门做了专属授权和通用授权的三个月实测对比,两个都是H5封装的应用,用户量都在五千左右,一个用共享证书池的通用授权,一个用独享证书池的专属授权。
实测结果很清晰:专属授权三个月总掉签次数2次,单次修复最长不超过40分钟,整体可用率达到99.7%; 通用授权三个月掉签12次,单次修复最长3小时,整体可用率95.2%。 价格方面,专属授权单个UDID一年的价格在1.6元到2.2元之间,五千个用户算下来大概八千到一万一年; 通用授权单个UDID一年在0.7元到1.1元之间,五千个用户大概四千到五千,价格差了一倍,稳定性也差了一个等级。 我也把这两个方案和官方上架、TF内测做了对比:能过官方上架的应用肯定优先选官方,不管是稳定性还是用户信任度都是最高的,只是很多H5封装的带分销、私域功能的应用过不了审; 如果用户量在一万以内,优先选TF内测,官方授权不会掉签,成本只需要每年99美元的开发者账号费用,比超级签名便宜太多,超过一万台才需要考虑超级签名。
聊完技术方案,说说我这些年的渠道价格感受,这么多年接触下来,不同渠道的价格差非常大,最便宜的有单个UDID三毛五毛的,最贵的能卖到三四块一个,我总结下来就是一分钱一分货,超低价的签名大多用的是黑卡注册的开发者账号,哪天苹果批量封号,服务商直接跑路,证书出问题找不到人补发,更别说开发票了。 中等价位一块左右一个UDID的通用签名,适合千级以内用户量的小应用,稳定性凑合用; 一块五以上的专属签名,适合五千用户以上的商业应用,稳定性有保障,出问题也能及时处理。 最后回到很多人问的超级签名发票如何开具这个问题,我这些年接触下来,很多个人小作坊是开不了发票的,本身没有正规资质,也没办法走公账,所以要开发票首先要找有正规企业资质的服务商。
开票流程其实很简单,一般分两种情况,开增值税普通发票只需要提供企业名称和税号,开增值税专用发票需要提供地址电话、开户行账号这些完整信息,大部分正规服务商都会在后台设置开票入口,你付费之后直接在后台提交开票信息,一般3到7个工作日就能开好,电子发票直接发邮箱,纸质发票会寄给你,发票内容一般是“信息技术服务”“应用技术服务费”,税率是6%,正规大服务商不会额外收税点,有些小渠道会额外收3到6个点的税点,这个要提前问清楚。 我之前有个客户走公账付费,找了个超低价的小渠道,付完款才说开不了票,最后只能重新找正规服务商重做,白白亏了几千块,这个教训一定要记。 这么多年下来,我也遇到过各种各样的证书问题,最常见的就是账号被封、证书吊销、掉签,好的服务商遇到这些问题都会免费自动补发重授权,不会额外收费用,也不需要客户操作,不好的服务商不仅拖时间,还要额外收费才给补发。
总的来说,做IPA授权,能走官方上架优先走官方,过不了审用户量少就选TF,用户量大就选大证书池的专属超级签名,不要贪便宜,需要开票一定要提前确认服务商资质,只要找正规企业,超级签名开票并没有什么难度,按流程提交信息就能拿到合规发票。