我做独立iOS开发快六年,大半接的私活都绕不开签名这回事。很多客户要么是资质不够没法走AppStore上架,要么是企业内部工具、小范围内测的项目,不想折腾审核,上来第一句话就是,能不能做稳定不掉的签名?

我最早踩的坑,现在想起来还头疼。前年接了本地一个连锁美容院的会员管理工具,客户预算卡得死,嫌贵的签名不划算,我贪着想做成单子,就找了网上报价八十块钱一个月的企业签名,当时商家拍胸脯说防掉签,掉了免费补。结果上线第三天早上,我刚睁眼就接到客户老板的电话,十几个门店的员工都打不开应用,当天有活动要录会员信息,急得嗓门都劈了。

我赶紧找商家,商家半天不回,等到中午才说排不上队,要补得等第二天。那一天我跟客户赔了无数笑脸,差点把定金都退回去,最后好不容易补上,不到一周又掉了。折腾了一个月,客户忍无可忍换了方案,我扣了一半工程款,白忙半个月不说,还落了个不靠谱的名声。

说回干货吧,很多刚入行的小开发者还搞不懂P12证书怎么用,我最早也懵。P12其实就是把你开发者账号里的证书和私钥打包导出的文件,签名必须靠这个文件才能给IPA加签名。很多人导出的时候不设密码,觉得麻烦,其实这里坑很大。我身边有个开发者朋友,自己花几千块买的企业开发者账号,导出P12给第三方签名的时候没设密码,结果对方偷偷拿他的证书签了好几个擦边应用,没半个月账号被苹果封了,几万块打了水漂,找谁说理都没用。

还有人搞混开发证书和发布证书,导出P12的时候拿错,结果签名完一半设备装不上,我就犯过这个错,大半夜对着电脑折腾三个小时,最后才发现是P12用错了,差点把键盘砸了。另外提醒一句,自己账号的P12别随便给陌生人,要是对方拿去违规操作,封的是你的账号,连累你其他正在用的应用,哭都来不及。

说下不同渠道的真实价格吧,我摸爬滚打这么多年,什么价位都试过,给大家报个实底,别被坑了。目前市面上常见的签名,价格差得真不是一点半点:超级签名按设备收费,正常价格一个UDID是1块到3块,那些几毛钱一个的,基本都是共享证书或者黑号,掉签概率能到80%,别碰;企业签名分共享证书和独立证书,共享的一般一个月100到300块,就是好多应用挤一个证书,掉签全看运气,独立证书一个应用独占一个证书,一个月大概1200到3000,看应用类型,正规应用便宜点,擦边的更贵,也没人敢接;TF签名也就是TestFlight签名,一般按下载次数算,1000次下载大概200到400块,全包年的话一个应用大概1000到2000,稳定得离谱;还有个人Ad Hoc签名,就是用个人开发者账号绑UDID,个人账号一年最多绑100个设备,一个设备一年大概10到20块,适合小范围几十台设备的内部用,价格不高,也稳定。

很多人搞不懂设备签名的原理,其实说穿了一点都不神秘。苹果每台iOS设备都有一个唯一识别码,就是大家常说的UDID,苹果的机制就是,只有被开发者证书授权过的UDID对应的设备,才能安装没上架AppStore的应用。所谓签名,就是把你的应用和授权的UDID一起写到证书里,让苹果系统认这个应用,允许你安装。说白了,所有签名都是依托苹果官方的开发者证书,苹果只要取消了这个证书的授权,就是大家说的掉签,应用就打不开了。

UDID绑定这块,我踩过的坑能绕我出租屋三圈。最早的时候获取UDID还要用户连电脑打开iTunes抄,麻烦死,现在都是做H5封装的获取页面,用户点一下安装描述文件就能自动拿到UDID,不用手动输,方便太多。但也有坑,有些小服务商的H5获取接口不稳,经常拿错UDID,绑错了之后用户安装完就是闪退,你还得一个一个核对,我之前有一次做80台设备的内部项目,有11台绑错了UDID,我对着列表一个个核对,弄了整整一天,眼睛都花了。

UDID绑定还有个问题,就是个人开发者账号一年最多只能绑100个设备,名额满了就得删掉不用的旧设备才能加新的,很多客户不知道这个规则,一年下来换了十几个手机,把名额占满了,加不了新设备,还得你来清理,所以我现在做这种个人签名,都会给客户做个简单的管理页,让他们自己删没用的UDID,省了我好多事。

说下证书分发机制吧,苹果官方本身就给了好几种分发渠道,不是说只有AppStore上架这一条路。官方的渠道分别是AppStore上架,面向所有用户;然后是TestFlight也就是TF,官方的内测渠道;然后是企业开发者的企业分发,面向企业内部员工,不用绑UDID,所有设备都能装;还有就是Ad Hoc分发,也就是绑UDID的个人分发,适合小范围测试。

很多人为什么不做AppStore上架?真不是不想,要么是资质不符合要求,比如做金融的没牌照,做医药的没有互联网药品资质,根本过不了审;要么就是企业内部工具,没必要给所有人下载,不想走上架流程;还有就是内测阶段,还没改完bug,不想先上线,所以才需要做IPA签名,绕开AppStore直接分发安装。

说到IPA签名,现在最多的需求就是把H5封装成IPA然后签名,很多小商家、小项目,不愿意花大价钱开发原生App,直接把做好的H5网页封装成IPA,改内容直接改网页就行,不用重新发版,成本低上线快,非常受欢迎。但H5封装的IPA也容易出问题,要是内容擦边,很容易触发苹果风控,掉签比原生应用还快,正规的本地生活、内部工具倒是没什么问题。我上个月刚做了一个社区团购的H5封装IPA,做的独立企业防掉签签名,到现在两个多月,一次都没掉过,客户挺满意。

掉签和补签这块,我真的有一肚子话要说。为什么会掉签?无非几种情况:第一种就是共享证书,同一个证书上有别人的违规应用,被苹果查到封了证书,你的应用跟着一起掉;第二种是企业证书分发量太大,触发苹果的风控机制,苹果直接回收了证书;第三种就是你没续费,签名商给你停了,或者签名商跑了,找不到人补。

现在说防掉签,真不是商家吹的什么黑科技,说白了就是选对方案。我现在总结下来,最稳定的就是TF签名,毕竟是苹果官方认可的内测渠道,只要你的TF账号没被封,应用本身没问题,根本不会掉签,这才是真·防掉签。唯一的限制就是一个TF应用最多只能有10000个测试设备,大部分小项目、内部应用、内测完全够用了,真的比什么企业防掉签签名还稳。

如果用户超过一万,只能用独立企业签名,那就要选一个证书只放你一个应用的,别用共享的,虽然贵点,但掉签概率低很多,掉了补签也快。我现在固定合作的商家,独立证书掉签之后一小时内就能补好,不用等,也不会额外收费,多花的钱真的是买省心,不用天天盯着手机怕客户找过来说掉签。

补签的坑也不少,很多商家说掉了免费补,其实有限制,一个月只能补两三次,补多了要加钱,还有的要排队排个三五天,客户业务停了,损失都是你来担。所以我现在接活,给客户找签名之前,都会把补签的规则问得清清楚楚,掉了多久能补,补签加不加钱,都跟客户说在前头,别到时候扯皮。

其实我一直都跟客户说,能做AppStore上架尽量上架,上架之后根本不存在掉签的问题,用户直接从AppStore下载,信任度高,也稳定,省了好多麻烦。真要是没法上架,再考虑签名,优先选TF,然后选独立企业,别贪便宜选几十块的共享签名,折腾来折腾去,花的钱更多,还得罪客户。

昨天晚上还帮一个老客户处理补签,他那个应用做了快一年,用户一万多,没法做TF,一直用的独立企业签名,这次是苹果扫证书扫到了,掉了之后我给合作商家发消息,不到四十分钟就补好了,客户那边马上恢复使用。我洗完澡出来收到客户的ok消息,倒了杯冰可乐靠在椅子上,想着做独立开发这么多年,坑踩多了也就摸出规律了,哪有什么百分百不掉的签名,不过是选对靠谱的渠道,多花点钱买个稳定,对得起客户的信任,自己也睡得踏实。