我接触苹果iOS签名已经快六年了,最早帮身边朋友做H5封装转IPA的时候就开始摸这个领域,这些年帮大大小小上百个客户做过IPA签名、分发,很多刚做iOS应用的开发者或者企业运营找我问的第一个问题就是ios签名需要什么,今天就把我这些年踩过坑、摸出来的干货整理出来,给想要做签名的朋友做个参考。
首先我先从最基础的签名技术原理讲起,很多人只知道签名能让未上架的应用装到iOS上,却不知道本质是什么。苹果的iOS系统有一套完整的应用签名校验机制,所有能正常安装运行的应用,都必须经过苹果官方授权的签名,没有经过合法签名的IPA包,iOS系统会直接拦截,根本不让安装启动。这套机制的核心是非对称加密:苹果作为根信任机构,给开发者颁发带开发者身份信息的开发者证书,开发者打包应用后,用证书私钥对应用文件做加密签名,用户安装应用的时候,iOS系统会用苹果公钥校验签名的合法性,确认这个应用是经过授权的,才会允许运行。而我们常说的IPA签名,本质就是借用已经获得苹果授权的开发者证书,给未通过官方上架审核的应用做签名,让应用获得苹果系统的信任,实现不上架也能安装运行,我最早做H5封装的本地生活应用,就是因为缺少相关资质过不了官方上架审核,才开始接触签名,这一做就是五六年。
讲完原理,再说说现在正规签名服务商都在用的证书池机制,我最早用签名的时候,小服务商都是手里只有一两张证书,不管什么应用都往上面塞,很容易出问题,后来正规服务商都开始做证书池机制。简单来说,证书池就是服务商提前申请并储备几十上百张不同类型的合法开发者证书,整合到一个资源池里,根据每个应用的类型、用户量分配对应的证书,同时预留足够的冗余证书。如果某一张证书因为苹果吊销、政策调整出问题,系统会自动把这张证书上的所有应用切换到池内其他可用的有效证书上,自动完成重签补签,用户基本感知不到掉签的影响。我自己就碰到过一次苹果大规模吊销企业开发者证书,我手里12个客户的应用都在合作商的证书池里,不到15分钟就全部完成自动切换,只有两个客户过来问了一句怎么安装包刷新了,我解释完就没事了,根本没影响用户使用。当然我也踩过证书池的坑,之前碰过一个小服务商说自己有证书池,其实也就三五张证书,掉了一张之后半个月都没补上,最后直接失联,害客户耽误了一周的业务,所以证书池的规模和质量,才是签名稳定的核心,不是随便攒几张证书就能叫证书池。
接下来再说说大家听得很多的UDID绑定,UDID是每一台iOS设备独一无二的识别码,UDID绑定是超级签名、TF签名这类签名方式最核心的机制。苹果规定,个人类型的开发者证书,一年内最多只能绑定100台不同的iOS设备设备,只有绑定了UDID的设备,才能安装用这个证书签名的应用。所以做超级签名的时候,用户想要安装应用,第一步就是需要获取自己设备的UDID,服务商把这个UDID添加到对应证书的绑定列表里,再针对这个设备重新签名IPA,用户才能正常安装使用。我最早做手动超级签名的时候,还要用户自己复制UDID发给我,我手动加到开发者后台,再重新打包,折腾大半天才能弄好一个用户,现在都是自动化流程,用户点一下链接就能自动获取UDID,几秒钟就能完成签名出安装包,方便太多。当然UDID绑定也容易出问题,很多不正规的小服务商,为了多赚钱,会把一个已经绑定过的UDID重复绑定到多个证书上,甚至超过苹果100台的限制,苹果检测到之后直接就会吊销证书,掉签自然就特别频繁,我之前有个客户贪便宜找了低价超级签名,半个月掉了四次,就是因为这个原因。
然后我再讲讲常规的重签流程,不管是新签名还是掉签之后的补签,流程其实都是大同小异的。第一步就是拿到用户提供的原始IPA安装包,不管是原生开发的应用,还是H5封装出来的应用,第一步都需要先做脱壳解密,提取应用的基础信息,检查应用本身有没有违反苹果规则的内容;第二步是根据用户选择的签名类型,匹配证书池里对应的可用证书,超级签名需要添加用户设备的UDID到绑定列表,企业签名直接分配空闲的企业证书,TF签名则需要先上传到苹果TestFlight后台;第三步就是用选定证书的私钥对IPA包重新做签名运算,替换原有的签名信息,生成新的签名后的可安装IPA包,最后生成对应的安装链接或者二维码,用户就能直接安装了。现在正规服务商都是全自动化流程,从上传IPA到出链接,几分钟就能完成,掉签之后也会自动触发重签,根本不需要用户手动操作,只有极少数特殊应用需要人工调整,我之前帮客户做一个带蓝牙功能的H5封装工具应用,脱壳的时候出了点小问题,技术人工调整了不到半小时就弄好了,效率非常高。
接下来就是大家最关心的,超级签名与企业签名的真实稳定性对比,还有我这些年了解到的不同渠道的价格,我接触这么久,市场上的价格其实一直都比较透明,稳定性的差异其实主要看渠道和证书类型,不是签名本身的问题。先说说价格吧,企业签名一般分三类:第一类是共享证书企业签名,就是几十上百个应用共用一张企业证书,价格最便宜,一般一个月只要几十到一百多块,我试过一次,确实便宜,但是稳定性极差,我那半个月掉了四次,补签都补不及,只适合自己做测试用,不适合正式给用户用;第二类是稳定限制版企业签名,就是服务商控制每张证书上的应用数量,一般一张证书只放两三百个应用,不会滥放,价格一般一个月300到600块,我现在大部分正式运营的客户都用这个,稳定性很不错,一般两三个月才会掉一次,掉了也能很快补签;第三类是独立证书企业签名,就是一整张企业证书只放你一个人的应用,完全不共享,价格一般一个月1500到3000块,这个稳定性是企业签名里最好的,我有一个客户做企业内部办公工具,用独立企业签名快一年了,只掉过一次,还是那次苹果批量吊销证书碰到的,补签之后到现在都没问题。然后是超级签名,超级签名是按设备数量收费的,一般市场价是一个设备1到3块钱,要是设备量超过一千个,批量价大概是8毛到1.5块一个设备,超级签名因为用的是个人开发者证书,苹果对个人证书的检测比企业证书松很多,只要服务商不违规超额绑定,稳定性比共享企业签名好太多,我有一个做户外俱乐部的客户,用户才200多,做超级签名总共花了不到300块,用了两年多只掉过一次,非常稳定。
说完价格再对比真实稳定性,从我这么多年的使用经验来看,只要是正规渠道的签名,稳定性都足够满足正常使用,大部分掉签问题都是贪便宜找了不正规小渠道导致的。如果你的应用用户量在一万以内,应用合规,超级签名的稳定性其实优于普通企业签名,因为苹果很少无故吊销个人开发者证书,掉签概率很低;如果你的用户量超过一万,那普通稳定版企业签名或者独立企业签名的成本更低,稳定性也足够;要是你想要最稳的,除了官方上架,就是TF签名,TF签名是苹果官方TestFlight的测试签名,本身就是苹果官方认可的,基本不会掉签,价格一般是按次收费,一次几百到一千多,有效期三个月,到期可以续,我很多过不了官方上架的客户现在都优先选TF,我有一个客户做H5封装的会员制社区,用TF签名快一年了,从来没掉过,唯一的缺点就是最多只能容纳一万个测试设备,用户超过一万需要重新打包,而且下载要跳转到TestFlight,部分用户觉得麻烦,但是稳定性真的没的说。
当然我也不是说签名就完全不会出问题,这些年我也碰到过掉签、证书被吊销的情况,大多是几种情况:一是苹果更新政策,批量吊销违规的企业证书,这种情况就算是正规渠道也可能碰到,但是正规渠道有证书池兜底,补签非常快,一般几个小时以内就能搞定,小渠道可能要几天甚至直接跑路;二是应用本身违规,被用户举报,苹果查到之后吊销证书,这种就算补签也容易再掉,所以签名只适合合规的应用,违规应用本身就不稳定;三是不正规服务商违规操作,超额绑定UDID、滥放应用,导致证书被封,这种完全是可以避免的,只要选正规渠道就不会有太大问题。而且正规服务商一般都提供免费补签,只要不是应用本身违规,掉了之后都是免费补,不会额外收费,我合作的正规服务商这么多年,从来没有补签还要额外收钱的情况,只有小服务商才会补签一次收一次钱。
回到最开始的问题,ios签名需要什么?其实非常简单,你只要有已经打包好的IPA文件就可以,不管是原生开发的应用还是H5封装出来的应用都可以,如果你还没有IPA,大部分正规服务商也提供H5封装成IPA的服务,只需要加少量的费用就可以,根本不需要你自己准备开发者证书,证书都是服务商提供,当然如果你有自己的证书,也可以让服务商帮你代签,只收少量手续费。
这么多年我用下来,只要选对正规的大渠道,签名的稳定性完全可以满足正式运营的需求,大部分人说签名容易掉,其实都是贪便宜找了低价小渠道导致的,正规渠道的证书池成熟,技术到位,不管是IPA签名、超级签名、企业签名还是TF签名,都能稳定运行,就算碰到掉签,补签也非常快,对用户的影响极小,对于没法做官方上架的应用来说,确实是非常靠谱的解决方案。