在iOS10之后咧擂,蘋果開放了CallKit這個框架曾棕,該框架允許語音或者視訊電話的開發(fā)者講UI界面整合到iPhone原生的電話App中钱磅,該章節(jié)我們講講如何通過CallKit的拓展Call Directory Extension來實現(xiàn)來電識別檬寂,它的大概原理是,app通過系統(tǒng)提供的接口纪他,預(yù)先將需要識別的號碼和對應(yīng)的識別結(jié)果(如:136xxxxxxxx -> 張三)寫入到系統(tǒng)內(nèi)部的數(shù)據(jù)庫中,然后來電時晾匠,系統(tǒng)會根據(jù)預(yù)設(shè)的號碼進行識別茶袒,但是應(yīng)用本身并不能參與識別的過程,因此也不用擔(dān)心用戶隱私信息被泄露的問題凉馆。
主要用到下面三個方法:
1薪寓、該方法會在用戶開啟權(quán)限的時候自動調(diào)用
- (void)beginRequestWithExtensionContext:(CXCallDirectoryExtensionContext *)context ;
2、該方法是添加黑名單
- (BOOL)addBlockingPhoneNumbersToContext:(CXCallDirectoryExtensionContext *)context ;
3澜共、該方法是添加需要識別的號碼與識別的身份
- (BOOL)addIdentificationPhoneNumbersToContext:(CXCallDirectoryExtensionContext *)context ;
當(dāng)然我們不可能每次都是在用戶開啟權(quán)限的時候才去寫入數(shù)據(jù)向叉,所以還需要一個更新數(shù)據(jù)的接口方法:
- (void)reloadExtensionWithIdentifier:(NSString *)identifier completionHandler:(nullable void (^)(NSError *_Nullable error))completion;
需要注意點地方:
1、添加識別號碼的格式
手機號碼格式:86+手機號碼嗦董,如果不加86的話母谎,會導(dǎo)致無法識別;
座機號碼格式:86+區(qū)號(區(qū)號第一個0不需要)京革,如:0255XXXXXXXX销睁,為86755XXXXXXXX
ps:這里只做個大概記錄,如感興趣的或者需要demo的可以簡信我存崖。冻记。。