做独立iOS开发快六年,踩过签名的坑,比我写过的bug还多。
最早做一款面向本地商家的小工具,没资质,也过不了AppStore审核,只能走签名分发的路子,那时候连什么是P12证书都搞不懂。
第一次接触P12证书,是在淘宝找的店家,花30块钱买了一个月共享签名,店家给我发了一个后缀是p12的文件,让我自己用工具给IPA签名,那时候才知道,P12其实就是苹果开发者平台导出的,打包了证书和私钥的文件,给IPA签名的时候,要导入这个文件,输入导出时设置的密码,才能完成签名。
我那时候不懂,导出P12的时候随便设了个密码,转头就忘,折腾了三个小时才重新生成新的P12文件,这个小细节,我现在都记的,新手用P12,第一步就是存好密码,密码丢了,整个证书就废了,只能重新做。
用了不到三天,我的应用就打不开了,提示未受信任的企业开发者,找店家一问,才知道P12证书被苹果吊销了,那时候我才开始沉下心,挖P12企业签名证书吊销原因,挖着挖着才发现,大半的吊销,都是自己踩坑踩出来的。
说点实在的,不同渠道签名的真实价格,我摸的门清,给新手做个参考,别像我一样贪便宜吃大亏。
超级签名,用个人开发者账号的100台设备配额做的,按设备收费,市场价一般1到3元一台一年,要是包月共享的,一百台一个月五六十,但是这种十有八九不稳定,掉签率极高。
企业签名分共享和独立,共享P12的,一个IPA一个月二三十到一百多都有,便宜是真便宜,不稳也是真不稳,我第一次买的就是29块钱一个月的,三天就掉了。独立P12的,就是一个证书只给你一个应用用,一个月三百到八百,包年的话四千左右,贵是真贵,稳也是真稳。
TF签名就是TestFlight上架签名,苹果官方的内测渠道,不碰违规内容的话,一般三百到六百一次,一次能稳三到六个月,掉了重新上架就行,特殊内容的可能要一千多,掉签概率比企业签低太多。
AppStore上架,自己有99美元一年的开发者账号,自己提交只需要年费,找第三方代上架的话,从几千到几万不等,看应用类型,卡审难的,几万很正常。
很多新手问我,设备签名到底是什么原理,UDID绑定又起什么作用,其实说穿了很简单,苹果的所有iOS应用,都需要经过授权才能安装,签名就是给应用盖个章,告诉苹果这个应用是允许装在这个设备上的。
像超级签名这种,用的就是Ad Hoc分发机制,每个个人开发者账号最多可以绑定100台设备的UDID,UDID就是每台iOS设备唯一的标识符,你把用户设备的UDID绑定到开发者账号的授权列表里,生成描述文件,再用P12证书给IPA签名,用户安装的时候,苹果验签通过,就能正常打开,这就是UDID绑定的意义,每一台设备都要单独授权,所以超级签名才会按设备数量收费。
那企业签名呢,走的是苹果企业开发者账号的分发机制,苹果给企业开发者开放的权限,本来是给企业内部员工分发内部应用用的,不需要绑定UDID,任意设备都能安装,所以才会被用来做外部第三方分发,也正是因为这个,苹果本身是禁止企业证书做外部分发的,一旦检测到滥用,直接吊销P12证书,这也是最常见的P12企业签名证书吊销原因。
我之前帮朋友做H5封装的IPA,他要给外地的经销商用,大概五十多个人,我劝他做TF签名,他嫌贵,非要省那几百块,找了个便宜的共享企业签,结果不到一周证书就吊销了,五十多个经销商全打不开应用,刚好那时候客户要来考察,觉得产品不靠谱,直接黄了几十万的合作,后来还是找我重新做了TF签名,才把项目挽回来,多花了钱不说,还耽误了大半年的进度。
H5封装其实就是把网页打包成标准的IPA格式,打包完做IPA签名就能分发,很多小商家、小开发者不想写原生代码,都用这种方式,只要内容不违规,不管做企业签名还是TF签名,都没问题,很多人担心H5封装的IPA签不了,其实完全没必要,只要不碰敏感内容,都能正常签。
证书分发机制其实分好几种,适合不同的场景,上架AppStore用的是发布证书,上传到AppStore之后,苹果会重新给你签名,用户下载就能用,这是最稳定的,只要能上架AppStore,我肯定优先推荐上架,毕竟不会掉签,用户获取也方便,但是很多应用不符合苹果的上架规则,比如企业内部应用、一些工具类应用、没有相关资质的应用,根本过不了审,只能走第三方签名分发的路子,我之前那个小工具,改了四个版本,还是被苹果拒了,说功能不符合规范,没办法才转做签名分发。
掉签补签这个事,我真的有说不完的血泪教训,最早那次掉签,我好不容易拉了两百多个种子用户,掉签之后找店家补签,店家说共享证书被封了,要排期,等二十四小时才能补,我那时候急的围着出租屋转,用户在群里骂,我只能陪着笑脸,好不容易补完签,发了通知让用户重新下载,结果回来的不到三分之一,大部分用户嫌麻烦,直接删了就再也没回来,那一次我才明白,掉签损失的不是签名费,是你辛辛苦苦攒的用户,一次大掉签,能把你小半年的运营成果全毁掉。
从那之后我就想通了,签名这块,稳定比什么都重要,省那几百块钱,不如多花点钱买个安心,我现在做内部工具用的是独立P12企业签名,一个证书只签我这一个应用,不到万不得已绝不外借,也不多个应用共用一个P12,这么做其实就是为了避免吊销,很多人不知道,多个应用共用一个P12,只要其中一个应用违规,整个证书都会被牵连吊销,我之前有个做开发的朋友,自己申请了企业开发者账号,生成P12之后,借给同行用了一次,结果同行拿这个证书签了违规的金融应用,没半个月,整个证书被吊销,连带着朋友自己的正常应用也掉了,企业账号还被苹果标记,差点封了账号,后悔都来不及。
除了滥用共用,P12证书泄露也是常见的吊销原因,要是你的P12证书被传到网上,被很多人下载使用,苹果能检测到同一个私钥在多个不同环境使用,很快就会吊销证书,所以我现在的P12都存在加密云盘里,从来不会随便发给别人,导出之后除了我自己的打包电脑,不会在别的地方导入,就是怕泄露。
还有就是内容违规,只要你的应用涉及色情、赌博、不合规金融这些敏感内容,苹果检测到肯定会吊销证书,不管你是独立还是共享,所以别碰红线,碰了就别想稳定。还有就是开发者账号到期没续费,证书自然失效吊销,这个是最基础的,很多新手忙起来忘了续费,到期掉签还摸不着头脑,白白耽误事。
补签其实也分情况,要是你用的是正规渠道的独立企业签名,掉签之后一般都是免费补签,重新给你出个包,换个链接分发就行,只要你提前通知用户,损失不会太大,要是用的那种便宜的共享签名,很多小渠道补签要么额外收费,要么拖个三五天,等你补完,用户早就跑光了,所以找签名渠道,一定要找靠谱的,别只看价格。
我之前也遇到过P12证书导出方式不对导致的吊销,很多新手在导出的时候,选错了证书类型,导成了开发证书不是发布证书,用不了几天就会被苹果检测到异常,直接吊销,所以用P12一定要分清楚开发证书和发布证书,签名分发一定要用发布证书导出的P12,这点错了,稳不了。
现在我手里三个项目,一个给企业做的内部工具,用的是独立P12企业签,做了快一年了,从来没掉过,用户用着也稳定,两个对外的小工具,用户量少的那个用的超级签名,按台收费,一年也就一千多,挺稳的,用户量多一点的那个,做了TF签名,半年多了也没掉,比我之前天天盯着掉签信息,一收到用户反馈就心跳加速的日子,舒服太多了。
其实做独立开发,本来就是赚点辛苦钱,每一个用户都来之不易,签名这块真的不能省,选对适合自己的签名方式,比什么都重要,我现在也偶尔帮新人看看签名的问题,都会告诉他们,先看自己的用户量,再看自己的内容,能上架AppStore就尽量上架,上不了就选TF,用户量小就选超级签名,需要不限制设备的就选稳定的独立企业签,贪便宜从来都没有好结果,那些看起来诱人的低价,早就把坑挖好了等着你跳。