我自己捣鼓了一款给身边同好共用的小工具,一开始满怀着期待想上架AppStore,毕竟大家从官方渠道下载最省心,我也不用到处折腾签名的事儿。可真正跑起来才知道,上架AppStore的门槛远超出我当初的预料,我只是个个人开发者,没有成熟的企业资质,好多需要填的备案信息我都凑不出来,光是提交审核就反复被打回来好几次,一会儿说隐私政策写得不清楚,一会儿说功能有合规风险,一会儿又说我用的第三方接口不符合要求,前前后后折腾了很久,我实在耗不起这个精力,索性放弃了上架的念头,转头开始研究各种苹果签名的方式,就想能让身边的朋友正常下载使用就行。
最开始听朋友说企业签名门槛低,不限制使用人数,我就找了个看起来还不错的渠道去弄。第一次安装的时候我完全摸不着头脑,拿到下载链接之后用Safari打开,点了安装之后,桌面确实出现了APP图标,可点进去之后直接弹出来提示说不受信任的开发者,根本打不开。我那时候吓得不轻,以为是下到什么恶意软件了,翻了好半天教程才知道,企业签名安装完之后需要手动去信任证书,流程说复杂也不复杂,就是打开手机的设置,找到通用选项,再往下翻找到VPN与设备管理,在一堆描述文件里找到对应那个企业级应用的证书,点进去之后点信任按钮,还要再弹一次确认,点完之后才能正常打开APP。我那时候对苹果这套机制完全不熟悉,翻设置翻了好久才找到入口,现在想想也算是最初踩的小坑了。
刚用上企业签名的时候体验其实还可以,流畅度没什么问题,可没安稳多久就遇到了掉签,某天早上打开手机准备用的时候,发现APP图标直接变灰了,点进去提示无法使用,我才知道原来签名还会掉。找商家解决的时候,商家说证书被苹果封了,要重新签名发新的安装包给我,我只能删掉原来的APP重新下新的,那时候我存了好久的本地数据根本没来得及备份,直接全没了,心疼了我好久。后来接触多了才知道,企业签名掉签是常有的事儿,尤其是那种很便宜的共享证书,好多不同的APP共用一张证书,苹果一旦抽查到封证书,所有共用的APP全都会掉签。后来我也试过贵一些的独占证书,商家承诺只有我的APP用这张证书,掉签概率确实低了很多,可价格翻了好多倍,而且也没法保证完全不掉,遇到苹果批量封禁企业证书的时候,还是一样会掉,每次掉签还是得重新安装,折腾来折腾去真的挺烦人的。
那段时间我也开始自己研究苹果签名的规则,知道了P12证书的存在,P12其实就是从苹果开发者账号里导出来的签名证书文件,带着专属密码,要是自己有开发者账号,就可以导出P12给签名平台,只用自己的证书给APP签名,不用和别人共用,稳定性会高很多。我自己申请了开发者账号之后,跟着教程一步步生成证书,导出P12的时候还踩了坑,一开始没搞清楚开发证书和生产证书的区别,导错了证书类型,结果上传给平台之后,签出来的APP怎么装都装不上,我又重新去开发者后台生成新的证书,重新导出,折腾了整整一天才弄对。后来我也知道了,P12一定要备份好,密码要记牢,不能随便泄露给陌生人,不然别人拿着你的证书乱签别的APP,很容易把你的证书也连累封掉,我现在把P12存在了好几个不同的地方,本地电脑存一份,云端网盘存一份,密码记在自己的私人笔记里,就怕哪天不小心弄丢了,之前换电脑的时候差点把旧电脑里存的P12删掉,还好当时反应过来及时导出来了,不然后果真的挺麻烦的。
后来听圈内的朋友说超级签名稳定性比企业签名好,我就转头去试了超级签名,最开始用的是普通的超级签名,安装流程比企业签名简单一点,只要提前把设备的UDID给商家加上,签好名之后下载下来,大部分时候不用手动去信任证书,直接就能打开,比企业签名少了一步操作,对普通用户来说友好很多。可普通超级签名还是一样会遇到掉签的问题,证书被封之后还是得重新下载,数据一样会丢,直到后来我找到了带自动切换证书功能的超级签名,才终于解决了掉签的麻烦。这种超级签名会提前给你备好多张可用的证书,存在后台,当你正在使用的证书出问题被封掉之后,系统会自动切换到备用的有效证书,根本不需要用户重新下载安装,原来存在APP里的数据也完完整整保留着,退出APP重进一下就能正常使用,我用了这么久,大部分掉签情况用户根本都感觉不到,自动切换完成之后直接用就好,只有一次所有备用证书都被封了,客服很快就上传了新的证书,没一会儿就自动切换好了,我都没怎么操心。
这期间我也试过其他的签名方式,首先就是TF签名,也就是TestFlight签名,这个是苹果官方的内测渠道,稳定性确实不错,很少会掉签,安装流程也很简单,拿到邀请链接之后用Safari打开,会直接跳转到官方的TestFlight应用,点击下载就能安装好,根本不需要手动信任证书,因为都是官方认可的,用起来很安心。可TF签名也有不方便的地方,首先就是提交之后也需要审核,虽然审核比AppStore松很多,但也会被打回来,我上次更新功能加了个导出记录的选项,就被审核卡了好几天,差点耽误朋友们用,而且TF签名有使用期限,到期之后还要重新提交,也没法支撑更多人使用,对于我这种慢慢有更多朋友加入进来的情况,其实不是特别方便。
我还试过H5封装,就是把做好的网页套个APP壳,做成安装包装到手机上,当时想着H5更新方便,不用每次更都重新发安装包,可实际用起来体验真的很差,封装好的APP流畅度远不如原生的,加载半天出不来页面,有时候还会和手机的返回手势冲突,用起来特别别扭,而且H5封装的壳本质上还是需要签名才能安装,我当时图便宜用了免费的企业签名,没几天就掉签了,用了没两天我就换掉了,不太适合我用的原生APP。
这么多签名方式我一个个试过来,踩了无数的坑,也摸出来了一些能让签名更稳定流畅的经验,首先就是尽量不要贪便宜用共享证书,一堆APP共用一张证书,被苹果封禁的概率太高了,动不动就掉签,折腾起来真的够闹心的。如果条件允许,最好是自己申请开发者账号,导出自己的P12证书,交给签名平台只用自己的证书签名,主动权握在自己手里,就算原来的平台出问题,你也可以拿着自己的P12去别的平台签名,不会一下子全用不了。其次就是选对适合自己的签名方式,如果只是小范围给身边人用,带自动切换证书的超级签名真的是最省心的,解决了超级签名原来掉签就要重新装的痛点,自动切换根本不用用户操心,稳定性比普通企业签名好太多,体验也比TF和H5封装好。要是想做大规模推广,那可以选企业签名或者努力上架AppStore,不过上架AppStore真的太折腾个人开发者了,我折腾了那么久都没弄成,现在也就彻底放弃了,就用现在的超级签名,朋友们用着都挺稳定的,没人说天天遇到打不开的情况,我也不用天天盯着证书状态,出问题了自动就切好了,省了好多精力。
我之前还遇到过一些小问题,比如手机更新系统之后,原来的签名APP突然打不开了,那时候我以为是掉签了,赶紧找客服,结果客服说就是新系统更新之后,证书信任需要重新确认一下,让我去设置里的设备管理看一下,我点进去重新确认了一下信任,退出来再打开就好了,虚惊一场。还有一次我自己改了P12的密码,忘了告诉签名平台,结果平台那边签不出来新的安装包,我又翻了半天笔记找到新密码,才解决问题,都是一些很小的坑,踩过一次之后就知道怎么避免了。
其实作为一个普通的小工具开发者,我想要的真的不多,就是让朋友们能顺利用上我做的东西,不用折腾太多乱七八糟的步骤,不用动不动就遇到打不开要重装的情况,能稳定流畅用就够了。试过这么多方式之后,现在的状态我已经很满意了,带自动切换证书的超级签名解决了我最大的痛点,自己握着P12证书也安心,不用怕平台跑路或者随便动我的证书,朋友们用着也舒服,有问题找我我也能很快解决,不用像之前用企业签名那样,掉一次签折腾大半天,还丢数据弄得大家都不开心。如果之后一直能保持这个稳定度,我也就不打算再折腾上架AppStore的事儿了,毕竟折腾上架要投入太多的时间和精力,对于我这种只是做给身边人用的小工具来说,实在是太不划算了,现在这样稳定够用,就已经很好了。