我是个业余编程爱好者,平时没事就喜欢捣鼓点小工具,前段时间为了方便记录家里三只猫的日常体重、驱虫时间和饮食情况,自己写了个轻量的原生APP,本来想放到AppStore给身边同样养猫的朋友一起用,谁知道光是上架流程就折腾得我头大,阴差阳错接触到了苹果签名,这大半年来试遍了各种类型的签名,也踩了不少坑,也算摸出了不少实用的经验。

最开始接触签名是找圈内一个朋友拿的免费企业签名,那时候我根本不知道什么是证书信任,下载完IPA安装好之后,点图标直接弹出提示说未受信任的企业级开发者,APP根本打不开,我以为是安装包损坏,连着重新下了三次,还骂了半天自己导出IPA哪里操作错了,后来才想起朋友说要手动信任证书。我按着他说的步骤找,打开设置点通用,翻了半天找到VPN与设备管理,进去才看到那个对应企业证书,点一下信任按钮,退出来再点开APP就正常能用了。那时候我还觉得流程也不麻烦,结果用了不到一周,某天早上打开APP直接闪退,再也进不去,才知道这就是大家说的掉签。找朋友帮忙补签,补完重新下载安装,才发现我之前记录了一个多月的三只猫的数据全没了,因为我那时候把数据存在本地,重新安装之后苹果的沙盒机制让新安装的APP根本读不到旧数据,那时候我真的欲哭无泪,从那之后我才开始认真研究各种签名的区别。

后来有网友给我推荐超级签名,说比企业签名稳定很多,我顺着介绍找到了超级签名自助平台,这才第一次接触到P12证书的使用。那时候我刚好买了苹果的个人开发者账号,本来就是打算用来测试的,自己就能生成P12证书,我按着平台的教程去苹果开发者后台操作,生成证书的时候没注意,导出的时候只导了证书文件没有带私钥,传去平台一直提示验证不通过,我折腾了快一个小时,换了好几种导出方式都不对,最后才看教程说要导出保存个人信息交换格式,要把密钥一起打包进去,原来P12本身就是证书加私钥的容器,少了私钥根本没法用,导出的时候还要自己设置密码,这个密码一定要记牢,我第一次导出之后随手输的密码转头就忘,害得我又重新生成了一次证书,折腾了大半天,终于把P12和IPA都上传成功,平台几分钟就签好了,生成了下载链接。我用自带的Safari打开链接点安装,安装完居然直接就能打开,不用像企业签名那样跑去设置里信任证书,原来超级签名是自动把设备的UDID加到开发者账号的描述文件里,本身就是苹果官方认可的安装方式,所以省掉了手动信任的步骤,这点体验真的好太多。

用了一段时间超级签名之后,我也遇到过一次掉签,那次是因为我慢慢加了很多朋友的设备,个人开发者账号最多只能加一百台设备,超出之后旧的设备也会被挤掉几个,就出现了掉签。掉签之后我自己就能解决,登录苹果开发者后台,删掉几个早就不用的旧测试设备,重新生成一下描述文件,导出新的P12再上传到超级签名自助平台重新签名,原来的下载链接不用换,朋友们只需要重新下载安装一次就好,因为我那次之后就学乖了把数据同步到iCloud,所以重新安装之后登录账号就能拿到所有数据,根本不会像之前用企业签名那样丢数据,这点真的安心太多。后来我也试过平台提供的共享超级签名,比自己传P12便宜不少,结果用了一个多月,那个共享证书被苹果封了,所有装了的朋友全掉签,又要重新弄,折腾了一圈,我就再也不用共享证书了,不管多便宜都不用,自己的证书自己用,不会被别人的违规APP牵连,真的稳定太多。

之后因为用的朋友越来越多,超过了个人账号一百台的限制,我又试了TF签名,也就是TestFlight测试签名,这个是苹果官方的测试渠道,我找了个代上架TF的渠道,把IPA传上去之后,审核一天就过了,生成了邀请链接,朋友点链接就能先下载TestFlight,再从里面安装我的APP,全程不用信任证书,也没有企业签名那种轻易掉签的问题,我这个TF版本用了快半年,从来没掉过签,确实稳定。唯一的问题就是更新麻烦,每次我改了点小功能,更新之后都要重新等苹果审核,快的话几个小时,慢的话要一天,不像超级签名自助平台,我改完IPA传上去几分钟就能出新的安装包,马上就能发给朋友用,而且TF每个测试链接也有人数上限,满了之后就要重新弄新的链接,对我这种小工具来说还好,要是经常更新的话真的有点麻烦。

我还试过H5封装,当时看到有免费的封装平台,说把网页打包成APP就能用,我本来就做了网页版,想着省点事就打包了一个,体验真的太差了。首先封装完还是要做签名,该走的流程一点没少,而且流畅度根本比不上原生APP,我要调用相册存猫的照片,经常点了调用权限半天弹不出来相册,有时候锁屏之后再打开,整个页面就要重新加载,之前输入一半的内容全没了,而且很多原生功能根本用不了,比如我要做体重提醒,推送经常收不到,用了两天我就放弃了,H5封装也就适合做个展示类的app,自己日常用真的不行,体验太差。

说到AppStore上架,我前前后后折腾了快两个月,试了五次,最后还是放弃了。第一次打回来是说我功能过于简单,不符合上架要求,我加了点分享功能和猫咪资料查询,第二次打回说我隐私政策写的不对,说我没有说明收集数据的用途,我改了三次隐私说明,又说我APP里面有个外链跳转到我的博客,不符合审核规则,我删掉外链之后又说我UI设计不符合规范,来回折腾,我就是个做给身边朋友用的免费小工具,没必要花这么多精力去迎合审核规则,最后干脆放弃了,还是用签名的方式分发,省心得多。

这大半年试了这么多渠道,我也摸出了怎么才能稳定流畅用的路子,最重要的就是绝对不要用共享证书,不管是企业签名还是超级签名,共享证书一个证书签几百个app,只要有一个app违规,整个证书就被封,所有人都掉签,天天等着补签真的折腾死人。要是你和我一样,就是几十个人用的小工具,最好就是自己弄个个人开发者账号,自己生成P12证书,放到超级签名自助平台自己签名,全程自己操作,什么时候想更新就什么时候传,几分钟就能弄好,证书自己握在手里,只有自己用,根本不会被牵连掉签,只要不超设备数量,几个月都不会出一点问题,用起来和上架AppStore的app没什么区别,流畅得很。要是人数超过一百台,又不怎么经常更新,那就弄TF签名,苹果官方的渠道,基本不会掉签,就是更新麻烦一点,胜在稳定。要是真的要给很多人用,那再慢慢折腾上架AppStore,虽然麻烦,但是最稳定,用户用着也最放心。

我之前也在淘宝找过那种几十块钱一年的企业签名,说是稳定不掉,结果三天两头掉,找商家补签还要排队,有时候上午掉的下午才补好,后来商家干脆找不到了,钱也打了水漂,真的不如花点小钱用自助签名自己掌控来得舒服。现在我就是日常测试更新用自己的P12签超级签名,测稳了之后再发到TF给更多朋友用,这么搭配着用,大半年来只出过几次小问题,都是我自己操作不小心忘密码导错证书这种,熟了之后根本不会出错,用着也安心,对于我们这种做个人小工具的普通开发者来说,真的比折腾上架AppStore方便太多了。