做独立iOS开发快六年,从刚出校门租小房子写代码到现在接小项目养活自己,苹果签名这块踩的坑能堆一箩筐。刚写出第一个工具类APP那会,一门心思想上AppStore,改了五次版本还是被拒,说我功能违反 guideline,那时候才懂,很多不符合苹果规则的APP,想要分发只能走签名这条路,而第一个难住我的就是手里拿到的苹果签名证书P12文件。
最开始拿到P12的时候我根本不知道这玩意儿有多金贵,随手存在了百度网盘根目录,还分享给了一个做开发的朋友参考,结果不到半个月,所有安装了APP的用户集体找过来,说APP点不开,显示不受信任的开发者。找服务商一问,人家说我的P12证书泄露了,被别人拿去签了三个违规APP,苹果直接把证书 revoke 了,想要用只能重新换证书花钱补签。那时候才搞懂,P12文件本质是打包了证书和私钥的加密文件,给IPA签名全靠它,苹果验证APP合法性第一步就是验证书里的信息,私钥泄露出去,被人乱用,证书百分百被封。
现在我手里存了五个不同项目的P12,全部存在本地加密移动硬盘里,导出的时候一律设16位以上的强密码,从来不敢随便分享,哪怕给服务商,也只找合作了两三年的老平台,再也不敢随便发给个人商家。用P12签名其实步骤说难也不难,自己有工具的话,导入P12,匹配对应的描述文件,把未签名的IPA拖进去点一下打包就好,核心就是证书本身不能出问题,P12只要安全,基本就能稳一大半。
说点大家都关心的,不同渠道苹果签名的真实价格,我这些年跑过太多商家平台,摸得门清。超级签名现在市场价基本是1-3元一个UDID,量大的话稳定的平台能给到0.8元左右,那种低于0.5元一个的百分百是坑,要么用的是被盗的共享账号签名,要么就是跑快钱,不出一个月账号被封,你钱花了用户全掉完,找人人都没了。我最早就踩过这个坑,充了三百块买了五百个设备量,不到十天全掉了,商家直接拉黑我,血本无归。
然后是企业签名,分共享证书和独立证书两种。共享企业签名现在一般是100-300元一个月,高防稳定的共享签大概200元左右一个月,掉签了免费补,我用稳的时候能两三个月不掉,那种几十块钱一个月的共享签,别碰,我用过50块一个月的,第二天就掉,补完第三天又掉,来回折腾一周我直接放弃了。独立企业签名,P12在你自己手里的那种,一般是1500-3000元一年,只要你不泄露P12,不搞几十万的下载量,不碰太违规的内容,基本能稳一整年,平均下来一个月也就一百多,其实比月月买共享签划算。
再就是TF签名,也就是TestFlight签名,这个是苹果官方的内测渠道,现在一般是300-600元上架一次,上架成功后能稳用90天,只要不被苹果下架就不会掉,那种一百多块钱的TF签名,基本都是用共享黑号上架的,容易被苹果连锅端,用不了几天就没了,正规靠谱的都在三百以上。至于AppStore上架,个人开发者账号本身是99美元一年,公司账号299美元一年,找代办上架的话,合规的普通APP一般几百块服务费就够了,要是那种本身规则擦边的APP,能包过审的代办价格从几千到几万不等,完全看项目类型。
很多刚接触签名的朋友搞不懂设备签名原理和UDID绑定,我最开始也懵,后来踩坑多了才理明白。苹果本身的机制就是,不管用什么证书,要让你的APP能装在用户iOS设备上,必须满足两个条件,第一是你的APP有合法的P12证书签名,证明这个APP是对应开发者账号授权发布的,第二就是这个设备要被允许使用这个开发者账号的APP,也就是UDID绑定。
比如超级签名,用的就是个人或者公司开发者账号的P12证书,苹果规则里每个个人开发者账号最多只能绑定100台测试设备,所以每来一个新用户,就要把这个用户设备的UDID添加到开发者账号的设备列表里,也就是绑定UDID,签名的时候把这个信息写进去,用户安装的时候苹果验证通过就能打开,要是没绑定,就算你签了名也装不上。而企业签名不一样,企业开发者证书是苹果给企业做内部APP分发用的,不需要绑定每台设备的UDID,理论上可以无限安装,所以用户不用提供UDID,直接扫二维码就能装,这也是为什么企业签名之前这么火,但是苹果现在查得越来越严,只要检测到企业证书用来对外公开分发,就会封证书,也就是大家说的掉签。
说到掉签和补签,我这辈子都忘不了去年那次糟心的经历。那时候做一个付费会员制的备考工具,攒了快三千个付费用户,图便宜找了一个1200一年的独立企业签,结果才用了四个月,某天凌晨起来打开手机,就看到几十条用户消息,全说APP打不开。我赶紧查证书,早就被苹果封了,找服务商,说我的APP被竞争对手举报了,证书救不回来,要补签就得再付一半的钱重新换证书,那时候真的恨不得把手机扔了,三天两头给用户发安装包,好多用户嫌麻烦直接退款,一周不到退了快一万,亏的那点钱比签名钱贵了十倍都不止。
掉签其实说白了就是几种情况,要么是共享证书里别的APP违规,把你连累了,苹果封证书一窝端;要么就是P12泄露,被别人拿去签违规APP,牵连你的证书被封;再就是下载量突然暴涨,苹果检测到企业证书对外分发,直接封号。补签其实原理很简单,就是换一个有效的P12证书,重新给你的IPA包签一遍名,然后生成新的安装包给用户重新安装就行,要是你的APP是H5封装出来的IPA,那还得重新封装一遍再签名,折腾一次就是大半天,所以我现在宁愿多花几百块,也要用稳定的,真不想天天蹲在微信里给用户发链接解释为什么又掉了,本来开发就够累了,处理售后耗的精力真的扛不住。
说到H5封装,我现在很多小工具都是H5写完之后封装成IPA,再做IPA签名分发,这样更新内容不用重新发包,用户也不用重新安装,方便得很。但是H5封装出来的IPA都是未签名的,必须用P12证书做IPA签名才能安装,不然用户装完就是提示未受信任,根本打不开,所以封装和签名永远是绑定的,先出未签名包,再签名,最后才能分发。我最闲的时候还自己签过,用第三方签名工具,导入自己的P12和描述文件,拖进去IPA等两分钟就出包了,其实操作不难,难的是维护证书和账号,用户多了天天加UDID真的熬人。
苹果的证书分发机制其实说透了就四种,大家根据自己的项目选就行。第一种就是AppStore上架,这个是最稳的,审核过了之后用户直接从商店下载,只要你不违规,永远不会掉,也不用操心签名的问题,缺点就是审核太严,很多擦边功能根本过不了,能合规的话我肯定优先选这个。第二种就是TF签名,也就是刚才说的TestFlight分发,属于苹果官方的内测渠道,不用过AppStore的严格审核,只要不碰太违规的基本都能上,而且官方渠道几乎不会掉签,最多九十天到期重新上架一次就行,现在我那些没法上AppStore的项目,基本都用这个,稳得离谱,用户也不用跳乱七八糟的网页,体验很好。第三种就是企业签名,适合用户量大,没法做TF的项目,独立证书只要保管好P12,其实也能稳很久,就是成本高点。第四种就是超级签名,适合小范围内测,用户不多的话成本不高,用户多了一个设备一块钱,一千个用户就是一千,其实比企业签贵多了,所以一般只用来做内测。
我现在养成习惯了,新项目出来,先H5封装成IPA,做一遍TF签名找种子用户测试,改完BUG之后能合规改的就改,改完申请AppStore上架,实在改不了的就一直做TF,用户破万之后再配一个独立企业签名做分流,这样成本和稳定性都平衡得很好,很少再出掉签的问题。之前也试过贪便宜,换低价签名,最后都是亏了更多,现在早就想通了,做产品用户信任是第一位的,三天两头打不开,再好用的功能也留不住人。
昨天刚给新做的社区工具封装完IPA,找老服务商做了TF签名,四百块,半天就上架成功了,刚才还看了下下载数据,五十多个种子用户都安装成功了,没有一个说打不开的。接下来打算再改一改隐私政策和功能描述,看看能不能申请AppStore上架,要是能过,就不用再操心签名的事儿了,安安稳稳做运营就行。