IOS开发callkit(call directory extension)勘误

本文作者分享了使用CallKit进行陌生号码识别时遇到的问题及解决方案,包括beginRequestWithExtensionContext的调用时机、号码添加方法、数据库管理、号码识别失效原因等,并提供了参考资料和注意事项。同时提醒开发者,号码更新应全量更新,并指出号码库更新的方法。
摘要由CSDN通过智能技术生成

最近在做一个项目,用到callkit的call directory extension来做陌生号码识别。网上很多文章写得不清楚甚至是错的,在此做一些勘误。本人也是小白,如有理解错误不吝赐教。

1、基础环境:

xcode12(最低版本要求不清楚,反正要支持IOS10)

一个真的插卡的iphone,要求iphone6以上(要64位CPU和IOS10)

2、参考教程

(1)苹果官方

(2)大神讲解过程

(3)国外大神的demo(给了我很多启示)

3、勘误

(1)beginRequestWithExtensionContext这个方法,会在打开系统设置的开关时调用。这个地方说的有一点含糊,我试了几个办法都没有办法调试这个extension,包括Stack Overflow的,也许是我太菜了。

(2)addAllIdentificationPhoneNumbers和addOrRemoveIncrementalIdentificationPhoneNumbers

这两个方法是最重要的添加号码的地方。一开始我只在addAllIdentificationPhoneNumbers里面添加,但是没有用,后来发现这个方法不行,这个方法似乎只有第一次安装这个app才会调用,后面再添加号码,应该走的addOrRemoveIncrementalIdentificationPhoneNumbers方法。这个地方注意一下。

(3)addOrRemoveIncrementalIdentificationPhoneNumbers时候注意事项

由于苹果不让你知道哪些号码已经在数据库(用的sqlite,号码重复会报错),所以最好全量更新。更新前加一句context.removeAllIdentificationEntries()即可。

(4)removeAllIdentificationEntries会不会清空全部数据库

查了一下报错时候的sql语句,table里面insert的时候有一个代表appid的字段,应该是根据应用分开的。推测不会清掉别的app写入的号码。

(5)为什么明明设置打开了,但是没有识别号码

插件加载时,只要报错,这个extension就会无法加载,直接全部挂掉。解决了报错就会恢复。

(6)为啥明明在工程中加了target,但是手机设置里面开关没出现

看一下你调试的是哪个target,如果是extension,肯定看不到。

(7)如何更新号码库

其实就是reloadextension,苹果的api可以查,csdn也有demo

(8)号码要不要加国家代码

我们单位短号是5位的,测试下来不要。长号未测试。

打包的写好的demo下载

以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值