iOS Call Directory Extension 實現(xiàn)來電識別與來電阻止

在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è)的號碼進(jìn)行識別,但是應(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的可以簡信我。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 最近需要實現(xiàn)一個新需求,用iOS 10出的CallKit實現(xiàn)將APP的通訊錄的信息同步到系統(tǒng)中,可以不把人員...
    莫云溪閱讀 14,233評論 22 23
  • 前言 最近兩天公司有需求研究CallKit來電識別和號碼拉黑,在網(wǎng)上找了一些相關(guān)博文。但是發(fā)現(xiàn)對于沒接觸過這方面的...
    Rex_閱讀 3,484評論 1 11
  • 當(dāng)離我的城市越來越近時,分明聽到了內(nèi)心的沉重,說不清這種沉重來自于哪里,是將要面臨某種離別流露出的負(fù)面情緒?還是因...
    簡小佛閱讀 424評論 1 2
  • nonatomic:非原子的,非線程安全的,適合內(nèi)存小的移動設(shè)備atomic:原子的,線程安全的 不寫的話默認(rèn)就是...
    富有的心閱讀 462評論 0 0
  • 小說主要反映泉州封建婚姻制度害人(書中沒有看出泉州和廈門,是從百度查到的)。林是第一人稱,一個中學(xué)教師,和...
    馬駒小火車閱讀 1,028評論 0 0

友情鏈接更多精彩內(nèi)容