我做独立iOS开发快六年了,大半时间都在和各种签名打交道。很多客户做的是内部工具、定制化项目,或是因为资质、规则问题没法走正规上架,从一开始帮客户做签名交了大几千的学费,到现在摸得门清,今天就聊聊我实际遇到的各种情况。
刚入行接第一个企业巡检项目的时候,客户要求不公开上架,只给内部一百多个员工用,我那时候连苹果ios签名有哪几种都分不清楚,随便搜了个关键词找了个最便宜的,结果不到一周就掉签,几十个员工打不开应用,我连夜到处找补签,差点把刚攒起来的口碑砸了。
现在说起来,不管哪种签名,本质都是IPA签名——给你未签名的IPA安装包挂上苹果信任的开发者证书,让iOS系统允许用户安装,这是最基础的逻辑。很多客户找我做H5封装,把手机网页包成APP壳,得到IPA包之后就以为能直接装,其实少了签名这一步,苹果系统根本不认,点安装直接提示不安全,根本用不了。
先说说最基础的P12证书使用。我刚接触的时候,一直搞不懂P12到底是什么,后来才明白,它就是把开发者证书和对应的私钥打包导出的文件,不管做哪种签名,都离不开P12。我最早图省事,找签名服务商要现成的共享P12,结果人家后来把证书回收给别的客户用,我那批用户直接全掉签,我一个个给客户道歉补签,折腾了快一周才搞定。现在我养成的习惯是,如果客户自己有开发者账号,P12一定要客户自己保管,我只做签名操作,绝不留存,更不会拿去给别的项目用,避免因为别的项目违规牵连自己客户的应用。导出P12的时候一定要设强密码,存到加密云盘里,丢了P12整个证书就废了,所有已经安装的应用都会掉签,这个教训我记到现在。
再聊聊设备签名原理和UDID绑定,最常见的就是超级签名用的这套逻辑。苹果给个人开发者账号的权限是,一年688块,最多可以绑定100台测试设备,只有绑定了UDID的设备,才能安装用这个账号签名的应用。所以超级签名的原理,就是把用户设备的UDID提前绑定到个人开发者账号的设备列表里,再用对应P12证书给IPA签名,这样苹果官方认可,就能正常安装了。这种方式适合小范围测试,或是几十上百台设备的内部使用,稳定度比共享企业签名好很多,只要账号没问题,基本不会掉。说到真实价格,现在市场上超级签名的差价特别大,我见过三块钱一个设备一年的,也有三十块一个的。那种几块钱的我试过,基本都是用黑卡买的开发者账号,苹果查到直接封号,不到半个月全掉,服务商直接跑路,补签都找不到人。正规靠谱的超级签名,单台设备一年大概15到25块,批量拿还能便宜点,这个是目前市场的真实价格,差太多的基本都是坑。
然后就是企业签名,用的是苹果299美元一年的企业开发者账号,本来是给企业做内部应用分发用的,不需要绑定UDID,任何设备都能安装,适合用户量多的项目。价格差更是离谱,共享企业签名就是几十上百个应用共用一个企业证书的P12,我见过最低50块钱包年的,还有一百块一个月的,这种掉签掉的你怀疑人生,我见过最多的一个礼拜掉五次,每次掉签所有用户都要重新安装,碰到活动或者关键时期掉签,能把人急疯。去年有个客户做618临时活动APP,图便宜找了个100块包年的共享签名,活动开始前六个小时掉签,服务商直接消失,连夜找我救急,我给他换了独立企业签名才赶上,客户说差点把几十万的活动搞砸,一百块省的钱,差点亏了几十万。独立企业签名就是一个证书只给你一个应用用,掉签概率低很多,正常稳定的独立企业签名,一个月大概300到800块,要是应用涉及一些敏感内容,价格还会更高,掉签之后只要在服务期,靠谱的服务商都会免费补签,半年掉一次已经算多的了,比共享签名稳太多。
我现在最推荐的就是TF签名,也就是TestFlight签名,本质是苹果官方的测试分发渠道,相当于把应用上架到苹果官方的测试平台,和AppStore上架是一个体系,只是它是测试版。很多没法上AppStore正式架的应用,只要内容不违规,基本都能过TF的审核,审核比正式上架松很多,而且因为是苹果官方的渠道,根本不会掉签,唯一的限制是测试期90天,到期重新发个版本就能续期,只要不违规,苹果不会封你。价格方面,现在正常的TF签名,全包过审大概200到500块一次,要是需要多次提交审核,也就加一两百,包年稳定也就一千多,比企业签名划算还稳定。我自己做的一个个人开发的习惯小工具,挂TF快两年了,从来没出过问题,用户安装也方便,点个链接直接跳转到AppStore下载,不用像企业签名那样还要手动信任证书,体验好太多。之前有个客户嫌TF审核麻烦,一定要做便宜的企业签名,三个月掉了四次,每次都要给几千用户发新链接,投诉一大堆,最后还是转了TF,花了两份钱,后悔都来不及。
说到AppStore上架,其实正规能上架的应用,肯定优先上架AppStore,不管是用户信任度还是分发效率都是最好的,但很多应用就是因为资质不全、行业规则,或是内部使用不需要公开上架,才会走签名这条路。去年我帮一个本地社区团购平台做APP,就差一个增值电信业务经营许可证,死活过不了AppStore审核,最后转了TF签名,几千个用户用到现在,一点问题都没出,用户也没觉得和正式上架的APP有什么区别。
苹果的证书分发机制其实说穿了就是一套信任链,苹果作为根信任方,只有它认可的开发者证书签出来的应用,iOS系统才会放行,所有签名方式本质都是在这个规则里找合适的分发路径,逃不开这个基础逻辑。UDID绑定就是为了获得苹果对单台设备的授权,P12就是拿授权签名的钥匙,一环扣一环,哪个环节出问题都会掉签。掉签最常见的原因就是证书被苹果封了,共享证书上只要有一个应用违规被举报,苹果查到就会封整个证书,所有上面的应用全掉签,黑卡账号被苹果查到封号也会掉签,所以选签名真的不能只看价格。
我现在接项目,只要是符合TF规则的应用,我都优先推TF,稳定又省心,用户体验也好。要是确实没法上TF,用户量又大,就选独立企业签名,小范围测试几十上百台设备,选超级签名就够了,最不推荐的就是那种几十块几百块包年的共享企业签名,看着便宜,算上掉签补签的时间成本和用户流失的损失,贵多了。
前阵子帮一个本地培训机构做内部刷题APP,就是把H5封装成IPA,三百多个内部学员用,最后做了TF签名,一共才花了不到四百块,三个多月了,一点问题都没有,学员下载方便,也不用折腾信任证书,客户满意,我也省心。
做独立开发这么久,天天和这些琐事打交道,碰过各种各样的坑,也见过太多客户上来就找最便宜的,最后花了更多钱补窟窿。今天整理旧项目翻出来早年踩坑留的各种文档,喝着茶随手写这些,就是给刚入行的朋友和需要做签名的朋友提个醒,选适合自己项目的比什么都重要。