我就是一个做小型工具APP测试的普通开发者,平时自己捣鼓一些小项目,前期不想折腾AppStore上架的复杂流程,所以一路摸爬滚打试了几乎所有能用到的苹果签名方式,这段时间踩了不少坑,也摸出了不少稳定使用的经验,今天就聊聊我真实的使用感受。
最开始接触苹果签名,听同行说企业签名不用上架就能给iOS设备安装,抱着试一试的心态找了个看起来价格很低的渠道,第一次安装的时候我就懵了,按照对方给的链接用Safari下载完ipa包,点击图标之后直接弹出“未受信任的企业级开发者”,根本打不开。我那时候什么都不懂,以为是下载包损坏了,删了重下,换了浏览器换了微信重新打开链接,前前后后装了四五次还是一样的提示,差点以为我手机出问题了,还去搜了半天灰图标的解决办法,折腾了快半小时都没弄好,最后只能找对接的ios企业签名技术支持,对方给我发了一步步的截图我才搞明白。原来企业签名安装完之后,必须手动去设置里信任证书才行,我那时候用的是iOS16系统,这个入口藏得特别深,要打开设置,点通用,往下翻到最底部才能找到VPN与设备管理,点进去才能看到对应开发者的描述文件,点进去之后还要点蓝色的信任按钮,输一遍自己的锁屏密码验证,验证完成之后证书才会被系统信任,这时候才能打开APP。我输密码的时候还提心吊胆,怕是不是什么恶意软件偷我密码,后来才知道这就是苹果系统的正常流程,纯虚惊一场,第一次成功打开自己装的测试包的时候,还挺兴奋的,觉得不用上架就能装真的太方便了。
用了没几天我就遇到了第一个大问题,掉签。那天早上起床打开APP,直接变成了灰图标,点了根本没反应,我那时候根本不知道什么是掉签,还以为手机更新系统出问题了,删了重下还是不行,甚至差点还原了手机的所有设置,后来还是找技术支持才知道,企业签名掉签就是证书被苹果官方检测封禁了,证书失效之后已经安装的APP自然就打不开了。那时候我贪便宜找的是那种几块钱包月的共享签名,商家收了钱之后根本找不到人,消息不回朋友圈也屏蔽了,刚好那时候第二天要给合作方看测试效果,急得我一晚上没睡好,到处找朋友借临时签名名额,最后折腾到凌晨才临时传到TF上装好,才没耽误事。从那之后我就知道了,找签名绝对不能贪便宜,那些低价的共享证书都是一个证书塞进去几百上千个APP,里面难免有违规内容,苹果一检测就直接封证书,所有人的APP都跟着遭殃,掉签就是家常便饭。
后来我慢慢懂了一些,也知道有很多渠道支持用户自己上传P12证书签名,刚好我们工作室办了企业开发者账号,就试着自己生成P12证书来签。第一次弄P12的时候也踩了坑,我按照网上的教程在开发者后台生成了证书,导出的时候直接只导出了公钥证书,没有带私钥,而且导出的时候没有设密码,上传到签名平台之后一直显示签名失败,我折腾了一天都没弄好,以为是平台的问题,找技术支持帮我查,才知道P12证书需要把证书和对应的私钥一起从钥匙串导出,导出的时候必须设置密码,空密码是没法用的,而且还要分清楚是开发证书还是生产证书,我一开始导出成了开发证书,用来做正式安装的签名本来就不对。按照技术支持说的步骤重新弄,生成CSR请求,创建生产证书,然后在钥匙串里选中证书和对应私钥一起导出,设置好密码,上传之后不到一分钟就签好了,装到手机上一次就成功了。用自己的P12证书签名真的稳很多,整个证书只有我自己的两三个测试APP,根本不会被别人的违规应用牵连,我这个证书用到现在快八个月了,一次都没掉过,这是我用过的企业签名里最稳定的方式。
后来我也陆续试了别的签名方式,先说超级签名,掉签掉怕了之后听别人说超级签名稳定,就试着买了一百个下载额度试试。超级签名的安装体验确实好,不用手动去设置里信任证书,扫码点安装之后直接就能打开,对不懂技术的测试人员来说真的太友好了,不用一步步教怎么找描述文件怎么信任,省了很多事。但是用了一段时间就发现问题,超级签名是按下载量收费的,每次换设备安装算一次,就算是同一个设备删了重装也算一次,我测试的时候经常要删了装装了删,一百个额度没用半个月就用完了,又要重新充钱,算下来比独立企业签名贵多了。而且我还遇到过一次,做超级签名的服务商那边批量账号被苹果封了,之前所有安装的APP全都打不开,服务商直接连平台都关了,找不到人解决,白白浪费了之前的钱,所以我现在只把超级签名用来临时给客户做演示,用一次装一次,长期测试绝对不会用。
之后我又试了TF签名,也就是TestFlight签名,这个是苹果官方的测试渠道,我用了之后真的觉得太香了。TF签名的流程就是把包上传到TestFlight之后,给你发一个邀请链接,点击链接跳转到TestFlight客户端,就能下载安装APP,全程都是苹果官方的,所以根本不会掉签,我那个TF版本用了快半年,一次问题都没出过。唯一的小问题就是,第一次安装需要先下载TestFlight客户端,很多不懂的新人容易在这里卡壳,要一步步教才行,而且TestFlight的测试资格是九十天,到期之后只要重新提交一下版本就能续期,也不算麻烦,成本也不高,十几个人的小团队测试完全够用,就算人数多一点只要定期更新版本也没问题,稳定性比超级签名和共享企业签名好太多了,我现在小团队内部测试基本都用TF,很少出问题。
我还试过H5封装签名,那时候想把一个网页工具快速做成APP,图省事找了H5封装,把网页打包成壳之后签了名装上去,体验真的差到极点。打开就是网页套壳,很多原生功能都用不了,调用相机扫码卡半天,经常闪退,定位也不准,网络稍微差一点就一直转圈刷不出来,而且包体积比原生包大很多,占手机内存,用了两次我就不用了,还是改成原生包重新签名,体验好了不止一点,所以H5封装真的只适合那种纯展示的静态网页,只要带点交互和功能需求,真的别碰,体验太差。
等到我测试完所有功能,准备正式上线给更多用户用,就走了AppStore上架流程,这一套流程真的太磨人了。审核真的太严格了,第一次提交就被打回来,说我的隐私政策写得不清晰,没有说明收集了哪些信息,用来做什么,我改完提交又被打回来,说我功能和现有APP重复,没有足够的原创性,我又改UI改功能细节,前前后后改了五次,花了一个多月才过审。上架之后确实舒服,所有用户都能直接在AppStore搜索下载,不用折腾任何证书签名,也不会掉签,更新也自动更,但是门槛真的太高了,要交年费,要过审,前期测试阶段真的没必要花这个精力,只有正式上线才适合走这个渠道。
说到掉签的解决办法,我踩了这么多坑也摸出经验了,不同签名掉签解决办法不一样,要是用的共享企业签名,掉签之后找对接的渠道补签,换个新证书重新签名之后,删掉旧包重新安装就好了;要是用的自己上传的P12证书,掉签之后先去苹果开发者后台看看证书是不是被 revoke 了,要是被封了就重新生成一个新的P12,重新签名安装就好了;超级签名掉签一般是账号被封或者额度用完了,换个账号重新签名下载就好;TF签名基本不会掉签,最多就是测试资格过期,重新提交个版本就能用,根本不用慌;H5封装掉签和原生包一样,重新签名就能用,只要选对了方式,掉签也很好解决。
我现在用下来,最稳定流畅的方法就是,前期小团队测试优先选TF签名,苹果官方的稳定有保障,根本不用担惊受怕掉签;要是需要直接安装,不想走TestFlight,就用自己的P12证书做独立企业签名,一个证书只放自己的APP,很少会被苹果检测到,稳得很;临时给客户演示就用超级签名,安装方便不用折腾;正式上线之后再走AppStore上架,H5封装除非真的只是纯展示网页,不然绝对不碰。这么长时间用下来,很少再出问题,之前踩的那些坑,大多都是因为一开始不懂,贪便宜选错了渠道和方式,现在摸出门道之后,整个测试流程顺畅多了,也不用再因为掉签急得团团转,签名这个事,说白了就是选对适合自己的方式,找靠谱的渠道,就不会有那么多麻烦事。