作为做了四年的独立iOS开发者,我开发的第一款面向本地中小商家的库存管理工具,就栽在了签名上。三次申请AppStore上架全被打回,理由是我保留了商家跳转私域联系客户的功能,违反苹果的引流规则,想过删掉功能上架,但删掉之后这个工具对商家来说就没用了,没办法只能走绕开AppStore的签名分发,刚开始大半年,天天收到用户的消息:我的APP怎么打不开了,显示苹果ios签名无法打开。那段时间掉签掉得我神经衰弱,手机开着震动睡觉,凌晨两点都能被用户的消息震醒。
最开始我连P12证书是什么都搞不懂,找第一家签名服务商,问我是自己提供P12还是他们出证书。我翻了好多教程才搞明白,P12是把开发者证书连同私钥一起导出的打包文件,不管你自己有开发者账号还是服务商出证书,签名都离不开它。我自己买了苹果99美元的个人开发者账号,第一次导出P12的时候没选包含私钥,发给服务商之后人家说你这P12就是个空壳,根本用不了,白等了一下午。后来学会导出,又忘了给P12设密码,服务商提醒我,P12不加密码很容易被盗用,要是被别人拿去签违规APP,会连累我的开发者账号被封,我才吓出一身冷汗赶紧重新导出加密。现在我一直记得,用自己的P12一定要设强密码,密码单独发给服务商,千万不能图省事把密码写在压缩包文件名里,圈子里见过好几个开发者因为P12泄露,账号被封,已经上架的APP都被下架,亏得血本无归。
跑了快十家签名服务商,我也摸清楚了现在不同渠道的真实价格,什么低价稳定全是噱头,一分钱一分货真的是真理。就说超级签名,也就是大家常说的个人UDID签名,现在市场上真实价格稳定的是一个设备8到12块钱一年,那些喊着一块钱一个设备的,我试过,不到三天全掉完,根本用不了。然后是企业签名,分三六九等,共享企业签名就是一堆乱七八糟的APP挤一个证书,价格大概是一个月150到300,我之前买过200一个月的共享签,平均三天掉一次,补签补到我麻木。独立企业签名就是一个证书只放几个合规APP,不接违规应用,价格大概是一季度1500到2000,包年的话四千左右,掉签频率低很多,只要你自己的APP不碰违规内容,一两个月掉一次就算多的。然后是TF签名,也就是TestFlight签名,这个是现在对中小开发者最友好的,价格一般是三百到六百一年,也有按下载量算的,一千个下载两百多,满了可以重新开链接,我用了快半年,从来没掉过。要是你需要把H5封装成IPA再签名,H5封装的手工费一般是150到300,我自己试过免费封装,适配出一堆问题,iOS16以上根本打不开,最后还是花了180找专业的调好了。要是你想找代办上架AppStore,合规的APP一般几千块就能搞定,要是沾点敏感内容,几万都不一定能过,我当时问过代办,改完功能收我八千,我没舍得,才坚定走签名这条路。
很多刚接触签名的朋友搞不懂设备签名的原理,其实说穿了很简单,苹果的机制就是,只有经过它允许的设备,才能安装没上架AppStore的APP,每台苹果设备都有一个唯一的识别码,就是UDID,相当于设备的身份证,所谓UDID绑定,就是把用户设备的UDID加到开发者账号的设备列表里,告诉苹果这个设备是允许安装我的APP的,再用对应的P12证书给IPA签名,苹果验证通过就能打开了,要是UDID没绑上,或者证书被苹果封了,就会出现苹果ios签名无法打开的提示。
证书分发机制其实也很好理解,苹果给不同类型的开发者发不同的证书:我们上架AppStore用的是发布证书,打包上传审核通过之后,苹果负责分发,不需要我们绑UDID,所有用户都能下载;企业开发者证书本来是给企业开发内部APP用的,允许企业不分发上架,直接内部安装,所谓企业IPA签名,就是用这个规则绕开AppStore,让第三方APP也能安装,但是苹果不允许这么干,所以检测到证书用来签外部APP就会封证书,证书一封所有签过的APP都打不开,也就是大家说的掉签。TF签名不一样,TestFlight本身就是苹果官方给开发者做测试用的分发渠道,所以TF签名是得到苹果官方认可的,只要你不在里面放违规内容,苹果根本不会封你的链接,自然就不会掉签,这也是TF稳定的核心原因。
说到掉签补签,我真的有一肚子苦水。最开始用共享企业签的时候,有次周末我陪爸妈去爬山,一上午手机震了四十多次,全是用户说APP打不开,早上商家要开门盘库存,打开就提示无法验证,急得要跳脚。我找服务商补签,服务商周末休息半天不回消息,我对着手机给几十个用户挨个解释,教大家怎么卸载怎么装新包,好多商家年纪大不会操作,我还要一步一步截图标注,爬到一半的山我原路返回,找地方给用户处理问题,那天本来计划好的全家游彻底泡汤,我坐在路边对着手机掉眼泪,觉得做独立开发怎么就这么难,改个功能上架算了,可改了功能我的APP就没用了,商家要的就是那个跳转私域的功能啊。
还有一次更坑,我贪便宜买了一百块一个月的共享签,服务商承诺三个月不掉签,结果一周掉四次,我找补签,补了两天服务商直接跑路,群也解散了,一百块钱倒是不多,但是我的二十多个用户全打不开,我连夜找新的服务商重新签名,给用户挨个发链接,折腾到凌晨三点,最后还是跑了三个用户,人家说你这APP太不稳定,换别家的工具了,我那时候本来用户就不多,跑三个对我来说都是大损失。
后来我慢慢调整,现在我的核心用户全转了TF签名,真的太香了。我只有三百多个付费用户,一个TF链接最多能放一万个安装,完全够用,花了四百多块弄好,用到现在快八个月,从来没出现过无法打开的问题,用户就算卸载了重新装,链接还是能用,根本不需要补签。新用户我先用超级签名过渡,找的是做独立账号的服务商,八块钱一个设备,半年才掉了两个,补签五分钟就搞定,用户也能接受。偶尔有老用户嫌转TF麻烦不想换,继续用企业签,我也提前说清楚,掉签我免费补,但是可能会频繁,出问题我第一时间处理,提前打了预防针,用户也能理解。
我最开始想过,既然上架难,我干脆做个H5算了,不用签名,用户直接微信打开用就行,可是H5在苹果端太多权限拿不到,离线不能用,推送也发不了,商家出门盘库存没网就打不开,根本没法用,所以才想着把H5封装成IPA,再做IPA签名,封装完和原生APP没区别,能存在用户桌面,能拿到各种权限,离线也能用,对商家来说方便太多。
其实我现在还在改一个合规版本,打算以后上架AppStore,做个基础版给新用户用,需要完整功能的再用签名版本,毕竟AppStore上架的用户信任度更高,下载也方便,但是完整功能的版本肯定还是要靠签名分发,苹果的规则就是这样,我们小开发者只能跟着规则找最适合自己的路。
昨天晚上和几个同做独立开发的朋友聚餐,聊起来还是免不了说签名的坑,大家谁都有过掉签补签到崩溃的经历,毕竟不是所有APP都能符合苹果的上架规则,绕不开签名这一步,选对适合自己的签名类型,找靠谱的服务商,比什么都强,省下来的时间,多改改功能,多服务好多几个用户,比天天盯着补签强太多。