我平时做一些小工具的内部测试,经常需要安装不同版本的测试包,时间久了,和各类苹果ios签名打了不少交道,从一开始什么都不懂踩坑踩得满脚是包,到现在能顺顺利利批量处理好自己需要的签名包,也算攒了不少实打实的感受,今天就随便聊聊这些年的使用体验。
最开始接触签名的时候,是开发伙伴给了我一个安装包,说没上架AppStore,需要签过名才能装,我拿到的第一个包就是企业签,下载完点图标,弹出提示说未受信任的开发者,根本打不开,我对着手机翻了好久才找到设置的入口,现在还记得流程,就是安装好ipa之后,打开提示无法验证,就要进到设置里面找通用,再找到VPN与设备管理,在企业级应用那一栏找到对应的证书,点信任之后确认,就能正常打开了。那时候我第一次批量处理好些安装包,慌慌张张点错了信任别的证书,结果好些包都打不开,折腾好一阵才弄对,现在想想也是挺好笑的。
用了一阵企业签名之后,我就遇上了签名最常见的问题,就是掉签,原本好好的图标突然变灰,点也点不开,那时候我根本不知道什么是掉签,以为是手机出了问题,还原了设置都没好,后来问了懂行的朋友才知道,企业签名是用企业开发者证书做的签名,要是证书被苹果查到封了,所有签过的包都会掉,打不开。那时候我用的是那种共享证书的便宜签名,掉签之后只能把原来的安装包全删掉,找签名商重新签好之后再一个个重新下载,再重新走一遍信任证书的流程,好些包重新弄一遍花了我大半天,累得不想动,那时候才开始琢磨怎么才能稳定一点,也慢慢弄明白了P12证书到底是怎么用的。
之前一直听人说P12,我根本不懂是什么,后来才知道,P12就是导出的时候包含了私钥的证书文件,只有拿到这个文件才能用对应的证书签名,很多便宜的企业签名都是共享证书,好多不相关的包都签在同一个证书里,只要有一个包违规被苹果查到,整个证书都被封,所有人的包都跟着掉签。后来我自己申请了企业开发者账号,导出了属于自己的P12证书,找签名商只用我自己的证书给我的包签名,整个证书里只有我自己的测试包,根本不会被别的违规包牵连,稳定了太多。之前我不小心把P12存在损坏的存储设备里,找不回来,整个证书都废了,重新申请折腾了好久,从那之后我都把P12存在好几个不同的地方,云端备份一份,本地硬盘存一份,就怕再弄丢。
接触完企业签名,我又试了超级签名,超级签名和企业签名不一样,是用个人开发者证书做的,安装的时候其实比企业签名方便,下载完直接就能打开,不需要额外去设置里面点信任,省了不少步骤。那时候我要批量处理好些设备的安装包,超级签名需要先获取每个设备的udid再添加进去才能签名,最开始我一个个找udid,弄得头晕眼花,后来找到的渠道支持批量导入整理好的udid,才轻松了不少。超级签名也会掉签,如果对应的开发者账号出问题被封,签好的包也会打不开,我之前遇到过那种用非正规账号做的超级签名,用了没多长时间就全掉了,那段时间还经常收到莫名其妙的垃圾短信,后来想想应该是udid信息被泄露出去了,想想还是挺不舒服的。
再后来我又试了TF签名,也就是TestFlight签名,这个是苹果官方的测试渠道,说起来真的是我用过最稳的签名类型了,安装流程也很简单,开发者把测试包传到官方平台之后,给你一个邀请链接,点链接就会跳转到官方应用下载页面,先下好官方的测试应用,再在里面找到对应的测试包安装就能用,全程不需要手动信任证书,也很少出问题。我用TF签名这么久,只出过一次问题,还是因为测试包的信息填错了被苹果下架,重新传了之后就好了,这么长时间一直都能正常打开,从来没莫名掉过签。唯一有点麻烦的就是有时候国内网络加载官方平台不太顺畅,要等好一阵才能出来,偶尔还要调整一下网络才能正常下载,不过比起掉签来说,这点小问题根本不算什么。
我还用过H5封装的签名,就是原本是网页,套个原生壳做成app,再签名安装,当时是为了临时把一个工具网页改成app用,所以做了H5封装,体验下来其实不如原生包,跳转加载都有点卡,而且H5封装的包很容易被苹果判定违规,掉签概率比原生包高好多,我那个封装的包,没多长时间掉了好多次,折腾得我够呛,而且每次掉签重新安装之后,原来存在本地的缓存数据都没了,还要重新登录设置,真的特别麻烦,所以之后我除了临时用一两次,再也不用H5封装做长期用的包了。
当然,最稳的还是直接上架AppStore,这个是苹果官方认可的正规应用,用户直接在AppStore搜到就能下载,下载完直接就能用,只要应用不违规被下架,就能一直用,从来不会有掉签的问题,不管是稳定性还是流畅度都是最好的。但问题就是上架AppStore的审核特别严格,很多内部测试用的工具,都会有一些不符合审核规则的功能,递了好多次都被拒,而且还要交年费,对于我们经常要改版本测包的人来说,不可能每次改一点就重新上架一次,成本和时间都耗不起,所以一般都是正式版本确定之后才会上架AppStore,测试阶段还是用各类签名比较多。
这么多年用下来,我也总结了不少让签名稳定流畅的方法,首先要看自己的用途,如果只是短期测试,用的设备不多,选TF签名真的最省心,官方背书,基本不会掉签,就算有问题也很好解决。如果需要批量处理好些测试包,要用很长时间,那最好就是自己掌握P12证书,用独立的企业签名,千万不要贪便宜用共享证书,共享证书看着价格低,实际掉签掉的你怀疑人生,折腾掉签花的时间精力,远远比多花的那点钱值钱,我现在用自己P12的独立企业签名,好久才会掉一次,比原来稳定太多。
就算偶尔掉签,现在也有很方便的解决办法,要是自己有P12证书,直接用原证书重新签一遍,覆盖安装原来的包就好了,不用删掉重下,数据也不会丢,省了好多事,要是没有自己的P12,那就只能删掉原来的包,重新下载新签好的包,再重新走一遍信任流程,批量处理的时候提前把下载链接整理好,也能省不少时间。我之前批量处理签名的时候,还出过把包传混的问题,好些版本不一样的包弄混了,装完之后才发现是旧版本,又重新弄了一遍,从那之后我每次批量处理之前,都会把每个包整理好,命名清楚,核对一遍之后再发出去,就很少再出这种错了。
找签名渠道也很重要,那些宣传得天花乱坠说永远不掉签的,大多都是坑,我之前贪便宜找过这种,没过多久就全掉了,商家也联系不上,钱打了水漂还耽误事,正规一点的渠道都会实话告诉你不同签名的优缺点,掉签了也会及时帮你处理,跟着苹果的规则更新调整,出了问题不用你自己瞎折腾。我最开始还想着自己搭环境弄签名,折腾了好一阵也没弄顺,批量处理的时候还要一个个操作,太费时间,不如找专业的渠道,花点钱省下来的时间能做不少别的事,对于我们做测试的来说,时间真的比这点钱重要多了。
这么久用下来,其实苹果签名也没有传说中那么不靠谱,只要选对了类型,找对了渠道,用对了方法,完全可以稳定流畅的用,满足测试的需求,那些乱七八糟的问题,大多都是贪便宜或者方法不对踩的坑,摸清楚规律之后,就顺多了。现在我每次批量处理签名,按着自己总结的方法来,很少出问题,就算出了小问题也能很快解决,再也不会像刚开始那样,掉一次签就折腾大半天了。之前新iOS大版本更新的时候,我还遇到过旧企业证书无法信任的问题,不管怎么操作都打不开,当时以为证书废了,结果联系渠道那边,说苹果更新了验证规则,帮我调整了一下证书配置就好了,那时候更觉得找个正规渠道有多重要,小渠道根本不会跟进这些规则变化,出了问题只能自己认栽。现在我用签名已经用得很顺手了,不管是单个测试还是批量处理,都能安排得清清楚楚,踩过的坑也成了经验,给身边做测试的朋友提建议,也都会把这些经验说给他们听,少走不少弯路。