iOS10 CallKit 之來(lái)電識(shí)別功能

先導(dǎo)入 Call Directory Extension

導(dǎo)入完成后趣倾,項(xiàng)目會(huì)多了一個(gè)文件夾
文件夾里的文件是CallKit 中 來(lái)電識(shí)別功能 添加黑名單功能的實(shí)現(xiàn)模版

發(fā)現(xiàn)問(wèn)題:
1菲饼,addBlockingPhoneNumbersToContext 谎势、addIdentificationPhoneNumbersToContext厨剪,這兩個(gè)方法中 承載電話號(hào)的 數(shù)據(jù)類型是CXCallDirectoryPhoneNumber , 這個(gè)類型是int64_t類型,也是long long類型兽间,所以大家在做類型轉(zhuǎn)換的時(shí)候需要注意卖氨。

2朝刊,如何動(dòng)態(tài)修改CXCallDirectoryPhoneNumber數(shù)組和對(duì)應(yīng)的標(biāo)識(shí)數(shù)組酬屉?

因?yàn)樗拗鞒绦?和 擴(kuò)展程序的數(shù)據(jù) 是隔離的半等,所以我們需要在宿主程序和 擴(kuò)展程序都 開(kāi)啟 APP Groups

宿主程序和 擴(kuò)展程序都設(shè)置完 APP Groups 就可以共享數(shù)據(jù)了揍愁。
在宿主程序中把從服務(wù)端請(qǐng)求回來(lái)的最新數(shù)據(jù),寫入到NSUserDefaults 中杀饵,我用來(lái)電識(shí)別功能舉個(gè)?? 莽囤,如下:

NSUserDefaults *userDefault = [[NSUserDefaults alloc] initWithSuiteName:@"group.testCallKit"];
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:10];
    [dict setObject:@"歐弟122" forKey:@"8615657138888"];
    [userDefault setObject:dict forKey:@"PhoneNumbers"];
    [userDefault synchronize];

上面代碼 需要注意的是 :
1, SuiteName的名字 是剛才設(shè)置 APP Groups 時(shí)創(chuàng)建的切距。
2朽缎,電話號(hào)碼前面要加 區(qū)號(hào) ,中國(guó)大陸的區(qū)號(hào)就是 86 或者 +86谜悟。

回到 CallDirectoryHandler.m 更改如下:

- (BOOL)addIdentificationPhoneNumbersToContext:(CXCallDirectoryExtensionContext *)context {
    NSDictionary *dict = [[[NSUserDefaults alloc] initWithSuiteName:@"group.testCallKit"] objectForKey:@"PhoneNumbers"];
    NSMutableDictionary *incomingTelegramInfo  = @{}.mutableCopy;
    
    [dict enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
        incomingTelegramInfo[@([key longLongValue])] = obj;
    }];
    
    for (NSNumber *phoneNumber in [incomingTelegramInfo.allKeys sortedArrayUsingSelector:@selector(compare:)]) {
        NSString *label = incomingTelegramInfo[phoneNumber];
        [context addIdentificationEntryWithNextSequentialPhoneNumber:(CXCallDirectoryPhoneNumber)[phoneNumber unsignedLongLongValue] label:label];
    }
    return YES;
}
測(cè)試結(jié)果

那么如何維護(hù)號(hào)碼庫(kù)呢话肖?
經(jīng)調(diào)研發(fā)現(xiàn),目前非越獄手機(jī)沒(méi)有 獲取來(lái)電號(hào)碼 的權(quán)限赌躺,所以就不能用 單個(gè)來(lái)電號(hào)碼 去云端數(shù)據(jù)庫(kù)比對(duì)處理狼牺,只能通過(guò)第三方應(yīng)用 把號(hào)碼數(shù)據(jù)庫(kù)寫入到手機(jī)本地羡儿,當(dāng)來(lái)電時(shí) 系統(tǒng)自動(dòng)去和本地號(hào)碼庫(kù)比對(duì) 并做出身份顯示礼患。
機(jī)制如下:


我也咨詢了做安卓的童鞋,如何在來(lái)電時(shí)觸發(fā)第三方應(yīng)用掠归,他提供了 泵宓活進(jìn)程 的思路。我這里就不過(guò)多闡述了虏冻》袅唬可以參考Android來(lái)電號(hào)碼獲取代碼

iOS 參考:
官方文檔
iOS關(guān)于系統(tǒng)電話、短信的調(diào)用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末厨相,一起剝皮案震驚了整個(gè)濱河市领曼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蛮穿,老刑警劉巖庶骄,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異践磅,居然都是意外死亡单刁,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門府适,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)羔飞,“玉大人,你說(shuō)我怎么就攤上這事檐春÷咛剩” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵疟暖,是天一觀的道長(zhǎng)卡儒。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么朋贬? 我笑而不...
    開(kāi)封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任凯楔,我火速辦了婚禮,結(jié)果婚禮上锦募,老公的妹妹穿的比我還像新娘摆屯。我一直安慰自己,他們只是感情好糠亩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布虐骑。 她就那樣靜靜地躺著,像睡著了一般赎线。 火紅的嫁衣襯著肌膚如雪廷没。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天垂寥,我揣著相機(jī)與錄音颠黎,去河邊找鬼。 笑死滞项,一個(gè)胖子當(dāng)著我的面吹牛狭归,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播文判,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼过椎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了戏仓?” 一聲冷哼從身側(cè)響起疚宇,我...
    開(kāi)封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赏殃,沒(méi)想到半個(gè)月后敷待,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嗓奢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年讼撒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片股耽。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡根盒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出物蝙,到底是詐尸還是另有隱情炎滞,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布诬乞,位于F島的核電站册赛,受9級(jí)特大地震影響钠导,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜森瘪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一牡属、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扼睬,春花似錦逮栅、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至军俊,卻和暖如春侥加,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背粪躬。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工担败, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人短蜕。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓氢架,卻偏偏與公主長(zhǎng)得像傻咖,于是被迫代替她去往敵國(guó)和親朋魔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容