我自己闲的时候写了个小工具APP,就是给身边几个朋友记录日常作息和健身数据的,安卓打包完直接就能发安装包装,轮到苹果这边我一下子就懵了,原来苹果手机装没上架的APP必须要先签名才行,我之前完全没接触过这些,只能一点点找资料踩坑,前前后后试了几乎所有能找到的签名方式,也算攒了不少实实在在的感受。
最开始我想着既然做了APP,不如直接上架AppStore,省得折腾签名的事,我按照要求填了资料改了包名,提交审核之后没两天就被打回了,说我这个工具支持自定义导入导出数据,不符合平台的内容规范,我改了两三次,每次都因为不同的理由被拒,折腾了快一个月我也就放弃了,转头找其他签名方式用,这才知道原来除了上架AppStore,还有超级签名、企业签名、TF签名、H5封装好几种方式,每一种用下来感受都完全不一样。
我试的第一种是企业签名,那时候找了个网上看起来名气不小的渠道,花了不到一百块买了季度签名,拿到安装链接之后我点开,按照提示点安装,手机桌面上一下子就出来了APP图标,我那时候还以为成了,结果点图标进去直接弹出来“未受信任的企业级开发者”,根本打不开,我又翻帖子找解决办法,才知道要手动去设置里信任证书。那时候我的手机还是iOS15,找这个入口找了快十分钟,先是打开设置,点通用,往下翻好久找到描述文件与设备管理,进去之后才能看到那个对应企业开发者的描述文件,点进去之后点信任,还要输一遍锁屏密码确认,我那时候着急输错两次密码,锁了半分钟才能再试,折腾半天才终于打开APP。刚用那几天感觉还不错,速度也流畅,谁知道不到一周,早上打开APP直接闪退,图标直接变灰了,我才知道这就是大家说的掉签。那时候找渠道客服补签,客服半天不回,回了之后说要重新下载安装包,我之前半个多月存的所有数据全都没了,气得我好几天没理那个渠道,后来才知道我买的这种便宜签名都是共享企业证书,好多不同的APP都用同一个证书签,只要其中有一个APP违规被苹果查到,整个证书都会被吊销,所有用这个证书签的APP全都会掉签,想解决只能重新签名重新装,数据根本找不回来。
后来我跟着教程学,才知道P12证书是怎么回事,原来P12就是把我们申请好的证书和对应的私钥打包成的一个文件,要是用自己申请的证书导出P12,再找平台签名,控制权完全在自己手里,不会和别人共享证书,自然也就稳定很多。我那时候自己去苹果开发者中心申请个人开发者证书,生成P12的时候要先在电脑上做证书请求文件,我跟着步骤走,导出的时候嫌麻烦没设密码,结果导入签名平台的时候一直报错,说私钥验证不通过,我折腾了快一下午,重新生成了三次才弄好,后来我把P12备份在了云盘和U盘好几个地方,就怕不小心丢了,之前有个朋友就是导出P12之后不小心删了电脑上的私钥,整个证书直接废了,只能重新申请 revoke 旧证书,折腾了大半天,我可不想踩这个坑。
弄好自己的P12之后,我找了一个支持ios签名API接口的签名平台,对接之后我自己就能在后台自动签名,不用每次找客服等半天,打包完直接调用接口上传原包,几分钟就能出签好的安装包,特别方便。这之后我又试了超级签名,超级签名和企业签名不一样,它用的是个人开发者证书签名,安装的时候不用手动去设置信任证书,点完安装直接就能打开,对身边不会折腾设置的朋友特别友好,我那些朋友拿到链接点两下就能装上,不用我一步步截图教找信任入口。最开始我用的是平台提供的共享个人证书超级签名,按下载次数收费,一开始也挺稳定,谁知道过了半个多月又掉了,问了才知道那个服务商的证书被苹果封了,因为那个证书签了太多不同的APP,触发了苹果的风控机制。后来我用自己的P12证书,通过API接口自己做超级签名,我的证书只签我这一个小工具,一共才二十多个设备用,远远低于苹果的限制,用到现在两个多月,一次都没掉过,特别稳定。
我后来也试过TF签名,也就是用TestFlight做的签名,这个是苹果官方的测试渠道,本来我想着官方的肯定最稳,就提交了包去审核,TF的审核确实比AppStore松很多,改了一次就过了,用户点邀请链接就能跳转到TestFlight下载安装,我用了三个月,确实一次都没掉过,稳定性确实没话说,但是用起来也有点麻烦,用户必须要先装TestFlight,还要登录自己的苹果ID才能下载,好多朋友嫌跳来跳去麻烦,不想装,而且TF的有效期只有九十天,到期之后还要重新上传包重新审核,虽然不算麻烦,但也要定期折腾,而且还有下载次数限制,人多了之后就不够用。
我还试过H5封装,就是把我做的网页版工具直接打包成苹果APP,本来想着这个开发快,改内容也方便,结果装完之后体验差到离谱,我要调用手机的日历提醒和本地存储,H5封装的包经常调用失败,要么就是卡半天出不来,用了两天我就换成原生包签名了,H5封装也就适合那种纯展示的页面,功能型的APP真的没法用。
这段时间踩了这么多坑,我也摸出来了几个能保持稳定流畅的方法,首先能自己提供P12证书就绝对不要用服务商的共享证书,共享证书哪怕说得再好听,说什么稳定不掉,只要人多混签就一定会有风险,自己拿着P12,只签自己的APP,苹果根本不会随便封号,掉签的概率低太多。其次就是选对适合自己的签名类型,要是只有几十个人以内用,用超级签名就很好,对接好ios签名API接口,自己随时能签名,掉签了自己重新签就行,几分钟就能搞定,不用等客服,安装也方便,不用折腾信任证书,用户体验好。要是人数多,上百个设备用,那就用企业签名,一定要找支持自己上传P12的正规平台,不要贪便宜买那种几十块一年的共享签名,那种掉签掉到你怀疑人生,我之前贪便宜买过,不到三天就掉了,补了三次还是掉,钱直接打了水漂。要是能接受用户跳TestFlight,那TF签名确实是最稳的,毕竟是苹果官方允许的,只要审核过了基本不会出问题,只是定期要更新一下。要说最稳的肯定还是上架AppStore,用户安装直接搜就能下,不用任何额外操作,也永远不会掉签,只是审核门槛太高,像我们这种小范围自用的不合规工具,根本过不了审核,所以只能用签名的方式。
我之前还遇到过不少小问题,比如超级签名的时候,不知道个人开发者证书最多只能绑定一百个设备,我一开始加了一百零几个设备,结果新设备一直装不上,查了半天才知道超了限额,后来又多申请了一个个人证书,才解决问题。还有一次我自己不小心在开发者中心 revoke 了旧证书,结果一下子就掉签了,还好我自己有ios签名API接口的权限,直接重新生成证书导出P12,重新签名,十几分钟就弄好了,换作之前找共享签名的渠道,不知道要等多久才能弄好。还有现在新的iOS版本改了信任证书的入口,之前帮朋友装企业签名的包,朋友用的iOS16,找了半天找不到入口,原来改到VPN与设备管理里面了,我还要重新截图标注,折腾好久,所以现在我都不用企业签名给朋友装了,都用自己签的超级签名,不用信任,省了好多麻烦。
掉签之后其实解决办法也分很多种,如果是共享证书掉签,只能找服务商补签,重新下载安装,数据基本保不住,如果是自己掌控P12的掉签,要么是证书被吊销,重新申请新证书导出P12,重新签名就行,要是只是证书掉了没被封,直接重新签名就能出新包,要是对接了API接口,整个过程十几分钟就能搞定,不用等任何人,现在我还开了增量更新,掉签重新签名之后,用户不用重新下载整个安装包,直接更一下就能用,数据也不会丢,比之前方便太多。
现在我一直保持着用自己的两个个人P12证书,对接签名平台的ios签名API接口做超级签名,身边二十多个朋友用,一直都很稳定流畅,改完功能直接打包调用接口,几分钟就能出新的安装包,大家更新一下就能用,之前遇到的掉签丢数据、找不到信任入口、没人处理问题这些糟心事,几乎都没有了,这也是我试了这么多方式之后,找到的最适合我这种小范围测试自用APP的方式。