我做线下客户对接工作快两年,每天要接打几十个客户电话,原生电话 app 没办法满足我批量标记客户信息、同步跟进进度的需求,找了大半个月才找到符合需求的拨号工具,却因为工具用到CallKit通话界面,没办法直接上架AppStore,只能靠着各种第三方授权方式安装使用,前前后后试了快一年,踩过不少坑,也攒了不少实际使用的经验。

最开始我听人推荐说企业签名支持CallKit功能,安装也方便,就随便找了个小商家问,最开始给我推的是通用授权的企业签名,价格很便宜,我当场就付了钱拿到了安装包。 下载完ipa包之后点击安装,屏幕弹出“未受信任的企业开发者”提示,直接点不开应用,我当时一下子慌了,以为安装包坏了,赶紧去找商家要教程,才知道要手动走信任证书的流程。 按照商家说的,我打开设置,找通用页面,翻了快十分钟都没找到描述文件与设备管理的入口,后来才知道我的iOS系统版本比较新,这个入口改到了VPN与设备管理分组里面,找到对应企业开发者的描述文件之后,点击蓝色的信任按钮,再确认一次,退出来就能打开应用了,第一次安装成功之后,我打开试用,CallKit的通话界面和原生系统完全一致,接打电话不会弹出任何提示,标记功能也能用,当时觉得太方便了,没想到麻烦还在后面。

用了不到六天,我早上打开准备给客户回电话,直接弹出来“证书验证失败”,点确认就直接闪退,这就是遇到掉签失效了。 我赶紧去找商家,商家说通用授权就是很多个不同的app共用一个证书,同证书里有别的app违规被苹果查到,整个证书都会被封,所以我这个也跟着失效了,给我重新发了一个新签好的安装包,让我删掉旧的重新安装走信任流程。 我那时候没开通应用内云备份,存在app里的上百条客户标记信息全部丢了,当时急得我满头汗,最后还是翻了半个月的通话记录才补回来大半,这也是我踩的第一个大坑。 从那之后我才知道,不同的授权类型差别真的太大了,后来商家给我推了专属授权的企业签名,说专属授权是一个证书只放我这一个app,不会被别的app牵连掉签,稳定性好很多,也同样支持CallKit功能,虽然价格比通用授权贵好几倍,我还是果断换了。

后来因为我偶尔也会帮开发者朋友测试一些修改版的安装包,就从商家那边拿到了对应的P12证书文件自己签名,一开始我还搞不懂P12证书到底是做什么的,用了两次才明白,P12就是存着签名私钥的文件,搭配对应的描述文件,就能自己给ipa包签名,不用每次都找商家帮忙打包。 我第一次导入P12的时候,因为不小心改了文件的后缀名,导入的时候一直提示密码错误,折腾了快一个小时才发现问题,改回原来的后缀名之后一次就导入成功了。 用自己手里的P12签名真的方便很多,改完一点小功能测试,自己打包就能装,不用等商家回复,唯一要注意的就是P12文件和密码一定要保管好,不能泄露出去,我专门把文件加密存在了云盘和本地硬盘两个地方,密码也记在了好几个地方,就怕弄丢了还要重新找商家申请。

这大半年我前前后后试了五种不同的授权方式,每个的感受都完全不一样,也总结出了怎么才能用的稳定流畅。 最早试的H5封装,当时商家说几十块钱能用一年,我想着先试试水就买了,装完才知道根本没法用。 H5封装就是把网页套个app壳,所有内容都要联网加载,没网根本打不开,而且根本调用不了系统的CallKit接口,商家说支持通话界面,结果只能在app里拨号,跳转到原生界面去接,标记功能也卡卡的,动不动就加载不出来,用了三天就掉签打不开了,从那之后我再也不碰H5封装了,这种也就适合做个展示型的app,根本没办法日常用,更别说要用到CallKit这类原生功能了。

然后是通用授权企业签名,就是我最开始用的那种,优点确实是便宜,门槛低,随便就能做,但是稳定性真的太差了,平均不到一周就掉一次,每次掉签都要重新安装,要是没备份数据就会丢,只能用来短期测一测app,长期用根本受不了,我用了一个月掉了四次,最后实在忍不了才换的。

接下来是TF内测,也就是TestFlight上架,这个是苹果官方的内测授权渠道,其实比第三方企业签名稳很多,安装也不用手动信任证书,点一下邀请链接跳转到TestFlight就能下载,我当时掉签掉怕了,就转了TF内测用了一段时间。 TF确实不容易掉签,毕竟是苹果官方的,我用了两个多月都没出问题,但是也有不小的缺点,首先就是名额限制,一个TF内测最多只能有一万个用户,而且九十天就要重新更新一次,到期了就要重新发邀请,其次就是更新版本特别慢,开发者发了新版本要等苹果审核,快的话大半天,慢的话要两三天,不像企业签名改完就能装。 还有就是CallKit功能在TF里面偶尔会出问题,我用的时候有时候后台放久了,再呼出电话就会跳出提示,后台驻留也不如企业签名稳定,经常放半小时进去就要重新加载,对于我每天要接很多电话来说,确实有点耽误事。

然后就是AppStore上架,这个肯定是所有授权方式里体验最好的,只要能上去,就是真的稳定,更新直接在AppStore更,不用管什么证书掉签,也不会弹任何提示,CallKit功能也能正常用,我当时也让开发者帮我提交了三次审核,结果都被拒了,苹果说我的app获取通话记录的权限不符合要求,CallKit这类功能现在审核卡的特别严,修改了好几次还是过不了,最后只能放弃了。 其实如果能成功上架AppStore,肯定是首选,不管稳定性还是体验都是最好的,可惜大部分带特定CallKit功能的app都过不了审核,没办法才要用别的方式。

最后就是我现在一直在用的专属授权企业签名,用到现在快半年了,只出了一次问题,还是因为我装了修改版的违规测试包牵连的,找商家重新签了一下就好了,一直稳定流畅,CallKit功能也从来没出过错,通话界面和原生一模一样,完全看不出来是第三方安装的app。

用了这么久,我也总结出来不少稳定流畅使用的方法,首先就是如果你的app没办法上架AppStore,又需要用到CallKit这类原生功能,一定要选专属授权的企业签名,千万不要贪便宜用通用授权,通用授权共用证书的模式本身就不稳定,只要有一个app违规,所有人都跟着遭殃,专属授权只有你自己的app,只要app本身不违规,基本不会掉签。 然后一定要找正规的渠道,不要找那种个人小商家,很多小商家用的都是盗用别人资质的黑证书,用不了几天就会被封,正规渠道都是用正规企业申请的证书,资质没问题,自然就稳定。 如果自己会打包,一定要把P12证书握在自己手里,一来自己打包测试方便,二来就算商家那边出问题,你自己有证书也能找别的渠道继续签,不用重新折腾。 平时使用的时候,不要刚出新的iOS系统就马上更,我之前就是刚出新版本就更,结果原来信任的证书失效了,还要重新去设置里点信任,后来我都是等大版本更了一两个月稳定之后再更新,就没出过这个问题。

如果真的遇到失效打不开了,其实也不用慌,我这么多次也摸出了解决办法,首先可以换个网络试试,有时候是苹果的验证服务器网络不好,换个WiFi或者切到移动数据,重启一下手机就能打开,不用重新安装。 如果换了网络还是不行,那就是证书真的被封了,这时候如果是专属授权,找商家重新签个安装包,删掉旧的装新的就好了,只要提前开了应用内云备份,数据也不会丢,我现在每次用都会自动云备份,就算重新装也能很快恢复所有数据,不会耽误事。

我之前还遇到过不少小问题,比如安装的时候明明信任了证书还是闪退,折腾了半天发现是下载的时候网络不好,安装包损坏了,重新下一遍就好了;还有一次安装到一半提示失败,清了好几个G的视频才发现是内存不够;导入P12的时候输错密码,把自己常用的几个密码都试了一遍才对,这些小问题其实都是用多了就能避开,一开始不熟很容易踩坑。

现在用着专属授权的企业签名,支持我需要的CallKit通话界面,稳定流畅,每天接打客户电话也不会出问题,对比我之前试过的好几种授权方式,确实是最适合我这种长期使用需求的,花的钱比通用授权多一点,但是省了很多掉签折腾的功夫,也不会丢客户数据,对我来说太值了。