这段时间帮几个做独立开发的朋友内测未上线的苹果应用,前前后后踩了不下十个坑,也把市面上能接触到的苹果签名方式都试了个遍,刚好最近一直在用支持多应用的超级ios签名,用了快两个月,攒了一肚子真实感受想好好唠唠。
最开始接触苹果签名,是朋友打包好内测包,给我发了一个网页链接,让我点击安装。我那时候只用过App Store下载的正规应用,点了安装之后回到桌面,看到应用图标灰突突的,点了之后弹出一句“未受信任的企业级开发者”,直接给我整懵了。朋友赶紧远程教我找信任证书的步骤,那时候我用的是iOS16系统,找描述文件找了快十分钟都没找到,翻遍了通用设置里的关于本机、隐私与安全性,什么都没有,后来才知道,只有安装了描述文件之后,系统才会显示出设备管理的入口,我刚才安装没成功,所以入口根本没出来。折腾了半天重新删掉重装,终于在通用设置的最下方找到了VPN与设备管理的选项,点进去之后找到对应开发者的描述文件,点击右上角的信任,弹出确认框之后还要再点一次才能生效。我第一次操作还手滑点成了取消,退出之后再进去,描述文件直接显示不可信,害得我又删了APP重装一遍,现在想起那番折腾都觉得头疼。
后来帮朋友整理签名用的材料,才接触到P12证书,那时候朋友的开发电脑重装系统,需要把之前的证书导出来给签名服务商,我帮忙操作,才搞懂P12到底怎么用。原来P12是包含了开发者私钥的证书文件,导出的时候必须在钥匙串里勾选“包含私钥”选项,还要设置一个访问密码,不然导出来的文件只有公钥,签名服务商根本用不了。我第一次导出的时候没注意,没选包含私钥,也没设密码,把文件发过去之后对方说用不了,我还以为证书过期坏了,折腾了一下午,重新登开发者中心下载证书,又重新导出,折腾到晚上才弄好。后来才知道,P12证书涉及开发者账号的权限,不能随便发给陌生人,也不能随便存在未加密的云盘里,不然很容易被别人盗用签名,甚至用你的账号发布违规应用,所以现在我帮朋友传输P12,都是用加密的聊天工具发,用完就让对方马上删掉,一点都不敢大意。
踩过这么多坑,我也把主流的几种签名方式都摸了个透,先说最早用的企业签名吧。最开始朋友图便宜,找了个共享证书的企业签名,说一个月才几十块钱,能装 unlimited 设备,结果我们用了不到一周就掉签了。那天我正录测试用例,退出之后再进APP,直接打不开,图标直接变灰,所有存在本地的测试数据全都拿不出来,我攒了五天的测试记录直接没了,当时气得我真想把手机扔了。后来才知道,共享证书就是一堆不相关的开发者共用一个企业证书,只要有一个人签了违规的应用,苹果查到之后直接封掉整个证书,所有共用这个证书的APP全都会掉签,真的是祸从天降。后来换成了独立证书的企业签名,就是整个证书只给我们自己用,只要我们不签违规应用,苹果就不会随便封,之后稳了快一个月,体验比共享证书好太多了。掉签之后我也摸出了解决办法,一般掉签之后先别着急删APP,如果只是描述文件失效,重新去设置里信任一次就能好,如果是证书被封,那就要先把能导出的测试数据导出来,删掉旧包,找服务商重新签名之后再安装,只要提前备份了数据,就不会丢内容,我现在每次测完都会把数据导出来存一份,再也不怕掉签丢东西了。
再说说我现在一直在用的超级签名,也就是这次的超级ios签名多应用支持,体验真的比企业签名好太多。超级签名是用个人开发者证书签名,原理是把测试设备的UDID添加到开发者账号里,一个个人开发者账号最多能绑一百个设备,刚好适合我们这种几十人的小范围内测。我用的这款支持多应用签名,就是一个账号可以同时签五六个内测应用,不用每个应用单独找证书找渠道,整理起来特别方便。而且超级签名安装好之后,大部分都不需要手动去设置里信任证书,装好直接就能打开,对我们测试人员来说省了好多事,再也不用到处找描述文件了。超级签名也不是完全不会掉签,我用了两个月就掉过一次,是因为那个账号之前绑的闲置设备太多,清理了一批不用的UDID之后,我们刚好在清理列表里,重新添加之后就好了,当天就补上了,没耽误多少测试。要说超级签名怎么才能稳定,我踩过坑之后总结,就是千万别贪便宜用黑号签的,那种黑号大多是盗来的开发者账号,今天用明天可能就被苹果封号,说掉就掉,我之前贪便宜用过一次,第二天就掉了,卖家直接联系不上,钱也打了水漂。现在用的都是正规可查的个人开发者账号,每个账号都不把设备加满,留十几个空位,就很少会出问题,稳定度比共享企业签好太多了。当然超级签名也有小坑,比如需要获取设备的UDID才能绑定,我第一次弄的时候用微信打开获取链接,怎么都获取不到,折腾了半天,才知道必须用苹果自带的Safari打开才能获取UDID,微信内置浏览器不支持这个功能,当时站在路边折腾了二十多分钟才装上,现在想起都觉得好笑。
说完超级签名,再说说TF签名,也就是TestFlight签名,这个是苹果官方的内测渠道,我之前做过一个八十多人的内测项目,用的就是TF签名,体验真的稳得离谱。安装也很简单,就是给你发一个邀请链接,点进去直接跳转到TestFlight应用,点击下载就能安装,也不用信任证书,也不用提供UDID,对测试人员来说特别友好。而且因为是苹果官方的渠道,只要你的应用内容不违规,苹果根本不会封你,我那个应用放了三个多月,一次都没掉过签,真的比任何第三方签名都稳。唯一的缺点就是审核比较严,提交的时候要符合苹果的审核规则,我第一次提交因为隐私协议写得不完整,被打回来两次,改完之后才通过,而且每个应用最多只能邀请一万个测试员,有效期是九十天,不过对于内测来说完全够用了,如果是几百上千人的内测,TF签名真的是首选。
接下来是H5封装,我也测过这种形式的应用,就是把移动端网页套一个苹果APP的壳,本质还是网页。开发确实快,改内容直接改网页就行,不用重新打包签名,但是体验真的太差了。我测的那个应用有调用摄像头和相册的功能,每次打开都要卡半分钟,选个图片直接闪退,刷个列表滑起来都掉帧,根本没法和原生应用比,只有那种简单的展示型应用适合用H5封装,功能稍微多一点真的别碰,而且H5封装完也还是要签名才能装,掉不掉签还是看你用的什么签名方式,本身并不能解决稳定的问题,体验还打折扣,真的不推荐。
最后就是App Store上架,这个肯定是所有人的最终选择了,只要能通过审核上架,用户直接在App Store搜索就能下载,不用折腾任何签名,也永远不会掉签,体验是最好的。但是缺点也很明显,审核严,很多内测应用或者不符合规则的内容根本过不了审核,还要每年交开发者年费,对于还在测试阶段的应用来说成本太高,改个版本还要重新审核,折腾下来要好几天,所以一般只有正式版才会上App Store,内测很少会直接上架。
踩了这么多坑,我也总结出了让签名稳定流畅的法子,其实没有什么黑科技,就是选对适合自己的渠道,别贪便宜踩坑。小范围几十人的内测,选正规支持多应用的超级签名就够了,只要不用黑号,控制好设备数量,稳定度完全能满足需求,价格也不贵,用起来还方便;如果是几百上千人的中大规模内测,直接选TF签名,苹果官方背书,几乎不会掉签,体验也很好;如果一定要用企业签名,别选共享证书,咬咬牙加钱上独立证书,能少掉很多坑;H5封装能不用就不用,功能多的应用体验真的太差;只要应用开发完了,能上架App Store一定要上架,这才是一劳永逸最稳定的方式。
这段时间折腾签名,最大的感受就是,苹果签名这块水真的很深,很多小服务商拿黑号卖钱,看起来便宜,用不了两天就掉签,最后折腾的还是自己,宁愿多花一点钱找正规的,出了问题能找到人解决,也比贪便宜踩坑强。我现在用的这款支持多应用的超级签名,五个内测应用都签在上面,两个多月没出什么大问题,偶尔掉一次也很快就能补上,不用我折腾半天,对于我们测试来说真的够用了,也不用再像之前那样天天担心掉签丢数据,省心太多了。