我做物联网定制开发快六年了,因为行业特殊性,绝大多数项目的配套App都是给特定客户、固定设备使用,很多涉及内部运维、数据管理的功能不符合官方上架要求,加上用户量大多在几十到几千不等,走官方上架成本太高,所以从入行开始就和苹果IPA签名打交道,大大小小踩过坑也用稳了很多年,今天就把我这么多年的实际经验整理出来,给有需要的朋友做个参考。

首先说最基础的签名技术原理,其实iOS系统本身有一套严格的信任验证机制,所有能正常安装运行的App,都必须带有苹果官方授权的数字签名,系统内核会在安装和启动时验证签名的合法性,验证不通过就会提示“未受信任的开发者”,根本打不开。我们常说的IPA签名,本质就是利用苹果给开发者开放的证书权限,给没有上架App Store的IPA包完成授权签名,绕开官方审核直接让用户安装,对于我们物联网行业来说,这真的是解决了大问题,不管是定制的设备中控App,还是现场运维的调试工具,还是给客户做的演示版本,都能通过签名快速分发安装。

接下来我讲讲这么多年让我觉得稳定性提升最大的证书池机制,我刚入行的时候,很多小服务商都是三五张证书挂几十个甚至上百个App,一掉就是全掉,后来行业慢慢成熟了才有了证书池机制。简单来说,证书池就是服务商提前批量申请了大量不同的苹果开发者证书,分类存储在资源池里,不同签名类型分开管理,当某一张证书因为苹果风控掉签之后,系统可以立刻从证书池里调取闲置的有效证书给用户的App重签,不用用户长时间等待。我现在合作的正规服务商,证书池里有两百多个个人开发者证书、四十多个企业开发者证书,都是分池管理,我手上一百多个物联网定制IPA,从来没有出现掉签之后大半天补不上的情况,之前有一次苹果清理开发者证书,当天我这边有七个绑定的证书同时掉了,服务商不到一小时就全部完成重签,原来的下载链接都不用换,用户只是需要重新安装一次,根本没影响项目运行,这要是放在早年没有证书池的时候,估计要等两三天才能恢复。

然后是大家问的比较多的UDID绑定,这个是超级签名的核心机制,我用超级签名最多,对这块太熟悉了。超级签名用的是苹果个人开发者证书,苹果规则里明确规定,一张个人开发者证书最多只能绑定100个设备的UDID,所以想要给某一台设备安装超级签名的App,就必须先把这台设备的UDID绑定到对应证书的设备列表里,才能完成签名授权。对我们物联网项目来说,大部分都是固定设备,比如项目现场的运维平板、展厅的触控一体机、设备配套的定制终端,设备很少更换,所以UDID绑定反而非常适合我们,绑定一次之后只要证书不出问题,就能一直用。我之前有个智慧农业的监测项目,三十多台现场数据采集平板,绑定UDID做的超级签名,快两年了只掉过一次,还是对应开发者账号被苹果误封,服务商很快就换了证书重签,一点都不影响使用。当然UDID绑定也有小麻烦,就是新设备添加的时候需要获取UDID,不过现在技术早就成熟了,服务商都会给你生成H5封装的自动获取UDID的页面,用户只要用Safari打开点一下就能自动上传,完全不用懂技术,我现在客户自己就能操作添加新设备,根本不用我帮忙。

接下来讲讲标准的重签流程,我现在轻车熟路,哪怕自己操作也用不了十分钟:第一步,准备好需要签名的IPA包,不管是原生开发的物联网App,还是H5封装好的成品包,都可以,只要没有违规内容就行;第二步,把IPA上传到签名平台,选择你需要的签名类型,是超级签名、企业签名还是TF签名;第三步,如果是超级签名,就上传需要安装的设备UDID,如果是企业签名或者TF就不用这一步;第四步,平台系统会自动从证书池里选可用的有效证书,自动完成重签,一般三五分钟就能完成,完成之后会生成专属的下载链接,用户用Safari打开就能安装。如果是掉签补签,流程更简单,正规平台现在都是自动补签,掉签之后系统自动换证书重签,链接都不用改,用户重新安装就能用,根本不需要我们手动操作,非常省心。

讲完基础的,我说说大家最关心的超级签名和企业签名的真实稳定性对比,还有不同渠道的价格,我用了五年,什么价位的都用过,给大家报一下真实的市场价。首先说企业签名,企业签名用的是299美元一年的苹果企业开发者证书,没有UDID数量限制,理论上可以给无数设备安装,所以价格差异非常大:小渠道的共享企业签名,就是一张证书给几十个App共用,一个月几十块到一百多块就能签,这个我早年贪便宜用过,稳定性极差,一个月掉三四次都是常态,有时候一周掉两次,客户天天找我投诉,后来我就再也不用了;然后是独立企业签名,就是一张证书只给你一个App用,不会被其他App连累,一般渠道的价格是一年五千到八千不等,稳定性比共享签名好很多,我现在少数大用户量的项目用独立企业签名,一年最多掉一两次,补签也很快。然后是超级签名,超级签名是按设备数量收费的,正规渠道的价格一般是一个设备一年五到十块钱,量大还能优惠,我这边100个设备一年大概是六百到八百,合下来一个设备不到八块,超级签名因为是把设备分散到不同的个人证书里,苹果很难风控,所以稳定性比共享企业签名好太多,我这么多年用下来,超级签名的掉签概率不到共享签名的十分之一,大部分项目一两年都不掉一次签。

除了这两个,现在还有TF签名,也就是苹果官方TestFlight测试签名,这个本质是走苹果官方的测试分发渠道,所以稳定性是最好的,几乎不会掉签,价格也不高,一般一个IPA签TF是三百到一千多一次,有效期三个月,到期可以续费续签,限制就是每个TF最多只能有一万个测试用户,对我们物联网项目来说,绝大多数项目用户数都不到一万,完全够用,而且TF是苹果官方认可的,根本不会被苹果风控掉签,我现在新项目只要能上TF我都推TF,性价比真的很高。

这里也要说说我遇到过的问题,不能只说好处,确实也遇到过掉签、证书问题,早年找个人小渠道,没有证书池,一块钱一个设备的超级签名,我贪便宜签了100个,结果不到半个月全掉了,人都找不到,钱也打了水漂,最后还是找正规服务商重新签,花了更多钱。还有一次苹果调整风控政策,一天清理了几百个个人开发者证书,我当时有十几个项目的证书在里面,虽然服务商有证书池,还是耽误了三个多小时,正好那段时间一个项目在验收,确实给我添了不少麻烦。不过换了正规大服务商之后,这种情况就很少了,五年下来也就遇到这么一两次,大部分时候都非常稳定,百分之八十以上的项目,一整年都不会掉一次签,补签也都是自动完成,我根本不用管。

另外很多朋友问H5封装,这个我也经常用,很多初创的物联网项目,不想花太多钱开发原生App,就把做好的H5网页直接封装成IPA包,然后签名就能安装在iOS设备上,用起来和原生App几乎没区别,成本只有原生开发的十分之一,非常适合小项目测试、小批量定制,我这边至少三分之一的小项目都是这么做的,封装好的IPA和原生IPA签名流程完全一样,什么类型的签名都支持,非常方便。

至于官方上架,我们也做,只有那种面向大众市场的物联网成品App才会走官方上架,官方上架当然是最稳定的,但是审核太严,很多定制项目、内部项目根本过不了审,而且上架成本很高,找服务商上架一个App少说也要大几千,过不了还不退款,周期也要一两个月,所以对我们大部分物联网项目来说,各种签名完全能满足需求,成本低,上线快,稳定性也足够。

这么多年用下来,我最大的感受就是,苹果签名技术现在已经非常成熟了,只要找对正规渠道,有完善的证书池机制,稳定性完全能满足B端项目的需求,大部分时候都比我们预想的要好用,掉签补签也早就不是什么麻烦事,对我们物联网行业这种大量定制化、小批量的App需求来说,真的是非常实用的解决方案。