我自己业余学iOS开发快两年,平时就喜欢做些小工具满足自己和朋友的需求,前几个月做了个专门记录户外露营行程和装备清点的APP,一开始没想着搞签名这些事儿,满脑子就是直接上线AppStore给大家用,哪知道第一次提交审核就被打回来了,说我隐私政策写的不规范,修改完再交,又说我获取定位的权限没有说明用途,前前后后折腾了快一个月,还是没通过,那时候我才开始四处打听,知道了原来不上架也能给苹果手机装APP,靠的就是苹果签名,这大半年来我折腾了各种渠道,也自己试着捣鼓过苹果签名证书服务器部署,踩了不少坑,也摸出了不少实用的经验,今天就说说我这些真实的使用感受。
第一次接触签名是找陌生卖家弄的企业签名,卖家给了我一个网页链接,我用Safari打开,点了下载,等桌面图标加载完成,我兴冲冲点进去,结果直接弹出“不受信任的开发者”的提示,根本打不开,我那时候根本不知道还要额外操作信任证书,慌慌张张跑去问卖家,卖家给我发了一步一步的流程,我对着手机设置慢慢找,那时候我用的是比较新的iOS版本,我翻遍了设置的隐私与安全分类,根本找不到信任证书的入口,急得我满头汗,差点以为手机出了问题,后来才搞清楚,要进到设置的通用栏,往下拉半天才能找到VPN与设备管理选项,点进去才能看到对应的企业开发者证书,选中之后点信任才能解锁打开,那一次我折腾了快二十分钟才成功打开APP,现在想想都觉得好笑,那时候对这些一窍不通,连这么基础的步骤都能卡半天。
后来折腾的久了,想着自己懂点开发,不如试着搭自己的签名服务器,也就是常说的苹果签名证书服务器部署,折腾的过程中才知道,签名离不开P12证书,我自己有注册个人开发者账号,本来想着从开发者后台导出证书很简单,跟着教程一步一步走,导出的时候看到弹窗让设置密码,我想着就自己用,设什么密码,干脆直接空着导出了,结果把P12文件上传到我租好的签名服务器的时候,一直提示证书格式错误,验证不通过,我换了好几个签名工具,换了好几种不同的导出方式,折腾了一下午,连晚饭都忘了吃,后来才在一个开发论坛的旧帖子里看到,导出用于签名的P12证书必须设置密码,不然签名服务根本无法识别,也没办法完成签名流程,我赶紧回去重新导出,设置了强密码,存到了我本地的加密备忘录里,再上传就一次成功了,那时候才明白,P12证书其实就是开发者身份的凭证,密码就是一层基础保护,要是证书不小心泄露了,别人拿着你的P12乱签各种违规APP,很容易导致你的证书被苹果官方封掉,所以不管是自己用还是找别人代签,P12的密码一定要保存好,绝对不能随便泄露出去。
我自己搭签名服务器折腾了快一周,终于把环境都配好了,自己签了几次,体验确实不错,因为证书就在我自己手里,只签我自己那一个APP,没有其他人共用,苹果根本不会检测到异常,那几个月都没出过任何问题,就是自己维护太麻烦,有时候苹果更新了签名相关的政策,我还要跟着调整服务器配置,赶上证书到期,还要提前重新生成重新部署,对我这种业余玩家来说,确实花了不少时间和精力,算下来成本比找第三方签名贵多了,要是只是小范围给朋友用用,真没必要自己折腾,适合那种长期要用到,又懂技术的人,可控性确实是最高的。
折腾完自己部署,我也把市面上常见的几种签名都试了个遍,最大的感受就是不同签名差的真的很多,先说我最开始用的企业签名,一开始图便宜选了那种共享企业签名,就是卖家把一个企业证书卖给好多人,几百上千个APP都往一个证书上放,价格确实低,我当时想着反正就是几个人用,便宜点就行,结果用了没几天,打开APP图标就变灰了,点进去提示证书失效,也就是大家说的掉签,我那时候第一次遇到掉签,慌得不行,里面存了我好几个月的露营记录,还有朋友一起整理的装备清单,要是数据没了我真的要崩溃,赶紧去找卖家,卖家说共享签掉签很正常,没办法只能重签,好在后来那个卖家会弄保留数据重签,帮我重新签了一遍,不用删原来的APP直接覆盖安装,数据都保住了,从那之后我就摸清楚了,掉签其实就是苹果查到了证书违规使用,把证书封禁了,所以签名就失效了,掉签之后第一时间不要乱删APP,只要卖家能重签,大部分时候都能保住原有数据,实在不行也可以先用电脑端的iTunes把整个APP备份出来,重签安装之后再恢复数据,也不会丢,后来我换了贵一点的独立企业签名,就是一个证书只放少数几个APP,不会一大堆人共享,从换了到现在快半年,只掉过一次,还是因为那个企业证书本身资质出了问题,卖家很快给我换了证书重签,没耽误用,所以说企业签名想稳定,真的不能贪便宜,一分钱一分货这句话放在这真的没错。
之后我也用了几个月超级签名,超级签名其实就是用个人开发者证书,把你设备的UDID添加到证书的设备列表里,再签名安装,我第一次用的时候,觉得这个真方便,安装完根本不用去设置里找什么信任证书,只要UDID添加成功,安装完直接就能打开,比企业签名省了好多步骤,那时候用的人不多,觉得成本也不高,就用了一段时间,后来朋友介绍朋友,要用的人慢慢多了,就不够用了,而且超级签名是按安装次数收费,每次掉签重新安装都要扣费,算下来比我用的独立企业签名还贵,我也遇到过一次大规模掉签,就是那个服务商用了被苹果标记过的共享证书,一下子所有签过的APP都失效了,折腾了好久才换了证书重新装好,所以超级签名其实适合小范围少量设备用,只要找正规服务商,不用那种来路不明的共享证书,其实也挺稳定,就是人多了真的不合算。
再后来听朋友劝,我试了TF签名,TF签名其实就是把APP放到苹果官方的TestFlight测试平台,用户通过TestFlight下载安装,我那时候提交审核,本来以为会像AppStore一样卡好久,没想到一天就过了,审核比AppStore松太多了,只要不违规基本都能过,安装的时候给用户一个链接,点开来跳转到TestFlight,直接下载就能用,根本不用弄什么信任证书,也不会轻易掉签,我用TF的那几个月,从来没掉过,只是有个有效期,到期了重新提交一个新版本就好了,真的比之前用的所有签名都稳定,唯一的麻烦就是所有用户都要先装一个TestFlight,有些不太懂数码的朋友,点链接跳转的时候会懵,半天找不到下载入口,还有就是每次更新版本都要重新提交审核,虽然审核快,但也要等几个小时,不能更完立刻让大家用上,总的来说,要是上不了AppStore,TF签名真的是目前最稳定的选择,只要你的APP能过审核,一定要选这个。
我一开始做APP的时候,先做了个H5版本,想着直接封装成IPA装苹果手机,就试了H5封装,封装完也签了名,装上去用了两天,体验真的不行,我要离线存装备清单,H5封装没有网络就用不了,调用相机拍装备照片也卡,有时候还会莫名闪退,定位也不准,而且封装完还是要走苹果签名流程,该掉签还是掉签,根本没解决本质问题,好处就是开发快,不用写原生代码,适合那种不需要调用系统功能,只是展示内容的APP,像我这种需要用到本地存储和系统权限的功能型APP,真的不合适,用了两天我就换掉了。
折腾了大半年各种签名之后,我把APP整改的差不多了,补全了所有资质和说明,再一次提交了AppStore上架,这次居然一次就过了,上架之后真的太香了,用户直接在AppStore搜就能下载,不用搞任何乱七八糟的操作,也永远不会掉签,更新版本直接更了就推送,用户根本不用管,就是对个人开发者来说,要交年费,审核又严,门槛确实高,要是能达到要求,真的优先上架AppStore,这是最稳定最省心的。
折腾了这么久,我也摸出了能让APP稳定流畅运行的方法,其实说起来也简单,能上AppStore就一定要上,这是根正苗红的官方渠道,没任何风险,也不用操心任何问题,上不了AppStore就选TF签名,官方背书稳定的不行,只要不违规基本不会出问题,TF审核过不了,那就选正规的独立企业签名,千万别贪便宜用共享签,小范围几个人用,选超级签名就够了,H5封装只适合那种纯内容展示的APP,功能型APP真的不推荐,要是自己懂技术,又要长期用,也可以自己捣鼓苹果签名证书服务器部署,存好自己的P12证书,自己签自己用,可控性最高,就是费点精力而已。这大半年踩了不少坑,也学会了好多东西,从一开始连信任证书都找不到的小白,到现在能自己搭签名服务器,其实苹果签名也没那么复杂,只要选对渠道,找对方法,就能稳定流畅用,不用太担心掉签的问题。