iOS Call Directory Extension 实现来
2017-01-12 本文已影响776人
lon_jack
在iOS10之后,苹果开放了CallKit这个框架,该框架允许语音或者视讯电话的开发者讲UI界面整合到iPhone原生的电话App中,该章节我们讲讲如何通过CallKit的拓展Call Directory Extension来实现来电识别,它的大概原理是,app通过系统提供的接口,预先将需要识别的号码和对应的识别结果(如:136xxxxxxxx -> 张三)写入到系统内部的数据库中,然后来电时,系统会根据预设的号码进行识别,但是应用本身并不能参与识别的过程,因此也不用担心用户隐私信息被泄露的问题。
主要用到下面三个方法:
1、该方法会在用户开启权限的时候自动调用
- (void)beginRequestWithExtensionContext:(CXCallDirectoryExtensionContext *)context ;
2、该方法是添加黑名单
- (BOOL)addBlockingPhoneNumbersToContext:(CXCallDirectoryExtensionContext *)context ;
3、该方法是添加需要识别的号码与识别的身份
- (BOOL)addIdentificationPhoneNumbersToContext:(CXCallDirectoryExtensionContext *)context ;
当然我们不可能每次都是在用户开启权限的时候才去写入数据,所以还需要一个更新数据的接口方法:
- (void)reloadExtensionWithIdentifier:(NSString *)identifier completionHandler:(nullable void (^)(NSError *_Nullable error))completion;
需要注意点地方:
1、添加识别号码的格式
手机号码格式:86+手机号码,如果不加86的话,会导致无法识别;
座机号码格式:86+区号(区号第一个0不需要),如:0255XXXXXXXX,为86755XXXXXXXX
ps:这里只做个大概记录,如感兴趣的或者需要demo的可以简信我。。。