那会儿我正给客户做一款健身打卡H5,嵌进壳子里打了个包,叫「呼吸节拍器」。客户说要快,iOS签名得当天上线,不能等App Store审核。我信了中介的话:“用超级签名,200台设备全签上,稳如老狗。”结果签完发测试链接,前天下午还蹦跶得好好的,第二天中午开始陆陆续续掉:先是客户助理的iPhone 13 Pro掉,接着她老板的iPhone 14 Plus也崩,最后连我自己测试机(一台旧XS)都弹窗报错。不是闪退,是根本打不开,点一下就卡半秒,然后弹框,像被苹果轻轻扇了一耳光。
价格?我分三批买的。第一批是朋友介绍的渠道,说是“自己有企业号”,380元/100台设备,含一年证书续期服务——听起来很踏实。第二批换了个看起来更专业的平台,网页做得像Apple官网,报价599元/100台,但加了“双证书冗余”和“自动轮换推送”,我咬牙又充了。第三批最离谱,临时救火,找了个微信昵称叫“iOS小李”的人,语音通话里他声音带点南方口音,说“你把UDID甩我,两小时出IPA”,收了我620块,签了47台,其中3台还是重复UDID(客户填错了,他没校验)。我没敢骂,因为当时客户已经在群里发了三个问号表情。
技术上,我现在算摸清一点门道了。所谓超级签名,本质就是用苹果开发者账号里的Ad Hoc或Enterprise证书,把IPA文件“盖章”后装到指定设备上。每台设备必须提前注册UDID,就像给车挂牌——但苹果不给你永久牌照,它只认“当前有效证书+绑定设备+未过期描述文件”。一旦证书被吊销(比如企业号被举报滥用)、或者描述文件过期、或者用户手动点了“删除描述文件”,签名就断了。更隐蔽的是Apple ID风控:有次我帮客户批量绑了23个测试账号,结果第19个账号登录iCloud时直接被锁,提示“异常登录行为”,连带着那台设备上的签名APP再也打不开——不是签名失效,是系统主动封了信任链。这事儿没人告诉你,文档里也不写,只有你看着23台设备里4台突然黑屏,才懂什么叫“信任比代码更脆弱”。
稳定性?我拿Excel记了17天。前5天掉签率0%,我以为成了;第6天起每天掉1-2台,第12天单日掉5台,集中在用iOS 17.5 Beta系统的几台设备上。后来发现,Beta系统对描述文件校验更狠,哪怕证书没过期,只要签名时用的Xcode版本低于系统要求,它就拒载。我重签了三次,最后一次把Xcode升到15.4,重新导出IPA,再用新证书打包,才算压住。但代价是:客户那版UI动效在新包里轻微卡顿——因为压缩参数变了,而我根本没时间测全机型。
也有顺的时候。上周给一家瑜伽馆做的「课表提醒+预约核销」小程序,用H5封装成APP壳子,走的是另一家小工作室的签名服务。他们不用企业号,用的是个人开发者账号+TestFlight外测通道+自建签名网关,成本高但掉签极少。我付了880元,签了63台,用了22天,只掉过1台——是用户自己卸载重装后没重新点信任证书。这种反而让我觉得安心:不靠黑盒,靠透明流程。他们甚至给我看了证书有效期倒计时页面,还能查每台设备的签名状态,像查快递物流一样。
说到Apple ID,我踩过最蠢的坑是:自己用主账号生成了签名证书,然后让客户用自己的Apple ID去安装。结果对方点“信任”时,系统跳出“此开发者未在您的账户中启用”,死活点不了。折腾半小时才发现,必须用签名时绑定的那个Apple ID登录iCloud,才能触发信任选项。我当场想删掉所有聊天记录。
现在我接单前先问三件事:客户有没有自己的苹果开发者账号?能不能接受每月手动点一次信任?是否允许我们用TestFlight替代部分签名场景?如果答案全是“否”,我就直接说:“上架App Store吧,虽然慢,但至少不会某天早上醒来,发现整个健身房的iPad都打不开签到页。”
当然,我也试过苹果商城上架。交了99美元年费,填了17页资料,被拒了两次:第一次说“缺少隐私政策链接”,第二次说“H5封装无原生功能,不符合App Store指南4.2.2条”。第三次我加了本地缓存、后台定位唤醒、还有个假装是蓝牙心率读取的空模块,终于过了。但客户说:“用户下载要等三天,而我们明天就要开团课。”——那一刻我盯着App Store后台那个绿色的“Ready for Sale”按钮,突然觉得它像一座漂亮的墓碑。
所以现在我桌上贴了张便签,上面写着:“签名不是终点,是信任的临时借据。”
掉签不可怕,可怕的是忘了它本来就是借的。
苹果签名,它确实能跑,跑得还挺快。
只是别把它当成公路,它只是一条浮在水面的绳索——你得一直踮着脚,还得记得给它打结。