我是做了快六年的独立iOS开发,一开始只接原生开发的活,遇到不少客户明确要求,不用上架AppStore,就要苹果ios签名手机直接装,用户点个链接就能安装,不用连电脑,不用越狱。那时候我对签名一窍不通,踩的坑能堆一箩筐,今天就把这些年的真实经验唠唠。
最开始我连什么是P12证书都搞不懂,只知道找第三方签名服务商,贪便宜拿了十九块九包年的共享签名,结果不到半个月全掉了,所有用户打开应用都是灰图标,客户堵着我微信骂了整整三天,最后赔了一半服务费才了事。后来才慢慢搞懂,P12证书其实就是把苹果颁发的开发证书和对应的私钥打包而成的文件,签名的时候必须用P12给IPA包做签名,苹果系统才能验证通过。P12的私钥绝对不能泄露,更不能多人共用,我那时候拿的低价签名,就是几百个IPA包共用一张P12证书,苹果一检测到异常分发,直接吊销证书,全掉。
用到现在我也摸清楚了不同渠道签名的真实价格,没有什么天上掉馅饼的好事,市场价一直都很透明。那种九块九、十九块九不限设备包年的,百分百是坑,不用考虑。共享企业签名,正常市场价是一个月五十到一百五十块,只适合临时测试用,长期用绝对不稳。独立企业签名,一张证书只给你一个应用用,市场价一般一个月三百到八百,稳定性比共享好很多,但还是有掉签风险,毕竟苹果现在对企业证书查得严。超级签名按设备收费,单个设备一年正常价格是三块到八块,一百台设备就是三百到八百,适合小团队内部使用。TF签名,也就是TestFlight签名,一个应用包一万个测试名额,正常价格是八百到一千五一年,是目前稳定性最高的。我自己用个人开发者账号申请的P12证书,苹果年费是99美金,折合下来六七百人民币一年,最多绑定一百台设备,自己用完全可控,稳定性拉满,就是设备数量有限。
说到设备签名原理,其实一点都不复杂,苹果本身就允许开发者给指定设备分发测试应用,原理就是提前把需要安装应用的设备唯一识别码,也就是UDID,上传到苹果开发者后台,加到对应证书的设备列表里,再用证书给IPA签名,这样只有列表里的设备才能验证通过安装应用,这就是UDID绑定的核心作用。很多新手不懂,以为签名可以不用绑UDID,其实所有非AppStore的安装,本质上都绕不开UDID绑定,只是现在做得好的签名,会用H5封装自动获取UDID的页面,用户点一下安装描述文件就能自动获取UDID,不用用户自己去设置里找,全程手机操作,体验很好。我刚入行的时候不会做H5封装的获取页,让用户自己找UDID,十个用户有八个找不对,折腾半天装不上,客户投诉不断,后来找了个开源的H5模板改了改,自动获取自动绑定,省了不知道多少事。
证书分发机制其实就是苹果的签名验证逻辑,任何安装到iOS设备上的应用,都必须有合法签名,打开应用的时候系统会联网向苹果验证签名有效性,如果证书被苹果吊销了,验证不通过,应用就打不开,也就是大家常说的掉签。我遇到掉签最多的情况,就是贪便宜用了共享证书,要么就是P12泄露被别人乱用,导致证书被封。之前有一次,我把自己的P12放在百度云盘里没加密,结果被爬虫爬走了,别人拿去用我的证书签名违规应用,没三天苹果就把我的证书吊销了,我手里五个客户的小应用全掉签,挨个给客户解释,补签,忙了整整两天,还赔了一个客户的损失,从那以后我所有的P12证书都存在加密U盘里,用的时候才插上去,用完立刻拔走,再也不敢随便存网上。
补签这个事,我也有说不完的话,掉签之后能不能及时补签,太考验服务商了。刚入行遇到的那种低价服务商,掉签之后找他补签,要么不理人,要么要加钱,有的直接跑路,连朋友圈都屏蔽你。现在我合作的正规服务商,还有自己用的证书,掉签概率很低,真掉了也能免费补,要是TF签名掉了,一般几个小时就能补好,重新发个链接用户就能装,不会耽误太久。要是自己的个人证书,除非苹果封了,不然根本不会掉,我有一个客户的内部打卡应用,用我自己的P12签名,绑了三十多个UDID,用了两年多了,从来没掉过,比什么签名都稳。
很多客户一开始都会问,为什么不直接上架AppStore?我每次都会解释,能上架肯定上架稳,上架之后只要不被下架,永远不会掉签,所有用户都能下载。但很多应用确实上不了,要么是企业内部应用,不想公开下载,要么是内容不符合AppStore审核规则,要么就是还在测试阶段,只想给内部人员用,这种时候IPA签名分发就是最好的选择,不用等审核,签名完就能装,手机直接点链接就搞定。
我现在最推荐的就是TF签名,TF本身是苹果官方的测试渠道,是合法的,所以基本不会掉签,只要你的应用不违规,苹果不会随便给你下架。我去年给一个做本地商家服务的客户做TF签名,一共八千多用户,用了快一年半了,从来没掉过,价格才一千多一年,比每个月花大几百做独立企业签名划算太多。当然TF也不是完美的,TestFlight默认每个应用最多一万个测试名额,要是用户超过一万,就得做分包,不过大部分中小项目,一万个名额完全够用了,用户安装也很方便,打开链接跳转到TestFlight就能安装,全程手机操作,不用电脑,符合手机直接装的需求。
还有很多客户来找我,说自己就是一个H5网页,想做成App的样子给用户用,我一般就是帮他把H5封装成IPA包,然后再做签名,封装好的IPA能调用手机的基础权限,比如定位、相机,用起来和原生App差别不大,价格也比开发原生App便宜很多,客户都很满意。上个月刚做了一个跑腿团队的内部应用,就是把他们的后台网页H5封装成IPA,一共四十多个骑手,我用自己的个人P12绑定了每个设备的UDID,签名做好之后生成安装链接,骑手直接手机点开就能装,二十分钟全部安装完成,用了一个月了,没人说打不开,客户挺满意的。H5封装也有注意事项,不要加多余的权限,不要做违规的内容,不然很容易触发苹果的检测,导致掉签,我一般封装的时候都会把不需要的权限全部关掉,尽量精简,稳定性会高很多。
UDID绑定也有坑,之前我找第三方买超级签名设备额度,说好的一百台,结果我绑到六十多台就说额度满了,后来才知道,服务商偷偷把剩下的额度卖给了别人,把我的额度占了,真的挺恶心的。所以现在只要是一百台以内的需求,我都用自己的个人证书,自己管理UDID,想绑哪个绑哪个,额度全是自己的,不会被别人蹭,也不用担心掉签,太省心了。
之前还有人找我,出两倍的价格让我给一个违规的工具App签名,我直接拒了,这种活哪怕赚再多也不能接,一旦被苹果查到,证书直接被封,连累自己手里所有客户的应用都掉签,损失的不止是钱,还有积累了好几年的客户信任,得不偿失。做这行这么久,我一直觉得,守好底线比赚快钱重要。
昨天刚给一个老客户更完新的安装包,对方的团队刚加了十个新人,我把十个新的UDID加到证书里,重新签名IPA,上传到服务器,把安装链接发过去,新人点一下就装好了,一切顺利。我喝着刚泡的大麦茶,刷着开发者论坛,看着别人吐槽又掉签了,想想自己这么多年踩坑踩出来的经验,其实也没什么秘诀,就是不贪便宜,选稳定的,违规的活不接,自己管好自己的证书,慢慢来就好。