iOS本地通訊錄獲取

簡(jiǎn)單的對(duì)于通訊錄獲得的總結(jié)苛坚,不成敬意予权!
1.用的類庫(kù),導(dǎo)入的頭文件

iOS9之前

#import <AddressBook/AddressBook.h>
#import <AddressBookUI/AddressBookUI.h>
遵循 
ABPeoplePickerNavigationControllerDelegate

iOS9之后

#import <Contacts/Contacts.h>
#import <ContactsUI/ContactsUI.h>
遵循 
CNContactPickerDelegate

2.僅僅讀取(相當(dāng)于調(diào)用系統(tǒng)的類和界面(類似獲取照片的功能))

(1)是否授權(quán)方面:(示例代碼)

iOS9之前

if (IOS_BEFORE(9.0)) {
        WS(ws);
        ABAuthorizationStatus status = ABAddressBookGetAuthorizationStatus();
        if (status ==kABAuthorizationStatusAuthorized) {// 授權(quán)成功
            ABPeoplePickerNavigationController *peoplePicker = [[ABPeoplePickerNavigationController alloc] init];
            peoplePicker.peoplePickerDelegate = self;
            // iOS8之后要加入這個(gè)屬性
            if (IOS_LATER(8.0)) {
                peoplePicker.predicateForSelectionOfPerson = [NSPredicate predicateWithValue:false];
            }
            [self presentViewController:peoplePicker animated:YES completion:nil];
        }else {// 授權(quán)失敗
            // 獲取通訊錄不是在主線程中獲得,所以切換主線程,展示錯(cuò)誤
            dispatch_async(dispatch_get_main_queue(), ^{
                [ws antuorFaildToShowView];
            });
            NSLog(@"授權(quán)失敗");
        }
       
    }

iOS9之后

 else {
        
        CNContactStore *contactStore = [[CNContactStore alloc] init];
        WS(ws);
        [contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
            
            if (granted) {
                CNContactPickerViewController *picker = [[CNContactPickerViewController alloc] init];
                picker.delegate = self;
                [self presentViewController:picker animated:YES completion:^{}];
            }else {
                
                NSLog(@"授權(quán)失敗");
               NSLog(@"[NSThread currentThread] = %@",[NSThread currentThread]) ;
                // 獲取通訊錄不是在主線程中獲得备蚓,所以切換主線程课蔬,展示錯(cuò)誤
                dispatch_async(dispatch_get_main_queue(), ^{
                    [ws antuorFaildToShowView];
                });
            }
            
        }];
    }

(2)代理方法示例:(示例代碼)

iOS9之前

#pragma mark - ABPeoplePickerNavigationControllerDelegate
- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier{
    
    ABMultiValueRef valuesRef = ABRecordCopyValue(person, kABPersonPhoneProperty);
    CFIndex index = ABMultiValueGetIndexForIdentifier(valuesRef,identifier);
    CFStringRef value = ABMultiValueCopyValueAtIndex(valuesRef,index);
    
    NSString *phoneNumber = (__bridge NSString*)value;
   NSString  *newPhone =[self trimSting:phoneNumber];
    //賦值給我TextFeild
    [self saveTeleToLoca:newPhone];
    
    [self dismissViewControllerAnimated:YES completion:^{}];
}
-(void)saveTeleToLoca:(NSString *)phone {
    _phoneTF.text =phone;
    [CMUserDefaults saveLocalString:phone andKey:kPhoneRechargeTelePhone];
    
}
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker {
    [self dismissViewControllerAnimated:YES completion:nil];
}

iOS9之后

#pragma mark - CNContactPickerDelegate
#ifdef __IPHONE_9_0

// 通訊錄列表 - 點(diǎn)擊某個(gè)聯(lián)系人 - 詳情頁(yè) - 點(diǎn)擊一個(gè)號(hào)碼, 返回
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty {
    
    // 獲得到用戶的手機(jī)號(hào)碼
    NSString *phoneNumber = [contactProperty.value stringValue];
    // 去掉手機(jī)號(hào)碼的“-”
    NSString  *newPhone =[self trimSting:phoneNumber];
    
    //賦值給我TextFeild
    [self saveTeleToLoca:newPhone];
    
}
- (void)contactPickerDidCancel:(CNContactPickerViewController *)picker {
    [self dismissViewControllerAnimated:YES completion:nil];
}
#endif

注意:
1.iOS10之后要在info.plist 中加入以下的屬性(來(lái)詢問獲得用戶的權(quán)限)

    <key>NSContactsUsageDescription</key>    
    <string>contactsDesciption</string>

具體iOS10之后相冊(cè)和麥克風(fēng)都要征得用戶權(quán)限的key詳見:http://www.reibang.com/p/c212cde86877

2.對(duì)于為了防止iOS9的系統(tǒng)運(yùn)行出現(xiàn)iOS10的程序防止編譯錯(cuò)誤囱稽,無(wú)法通過(guò),應(yīng)該用條件編譯如下:

#if __IPHONE_9_0
// 9.0之后的用二跋,防止9.0之前的編譯失敗
#import <Contacts/Contacts.h>
#import <ContactsUI/ContactsUI.h>
@interface PhoneRechargeViewController ()<UITextFieldDelegate,CNContactPickerDelegate,NHThirdPayViewDelegate,ABPeoplePickerNavigationControllerDelegate>
#else

@interface PhoneRechargeViewController ()<UITextFieldDelegate,ABPeoplePickerNavigationControllerDelegate,NHThirdPayViewDelegate>
#endif

3.需要獲得通訊錄具體數(shù)據(jù)用:(相當(dāng)于獲得通訊錄數(shù)據(jù)战惊,自己展示)
后續(xù)總結(jié):

參考網(wǎng)址:
http://www.reibang.com/p/6acad14cf3c9
http://blog.csdn.net/kenrry1992/article/details/51252274
http://www.reibang.com/p/df0ea100c3da

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市扎即,隨后出現(xiàn)的幾起案子吞获,更是在濱河造成了極大的恐慌况凉,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件各拷,死亡現(xiàn)場(chǎng)離奇詭異刁绒,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)烤黍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門知市,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人速蕊,你說(shuō)我怎么就攤上這事嫂丙。” “怎么了规哲?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵跟啤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我唉锌,道長(zhǎng)隅肥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任袄简,我火速辦了婚禮武福,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘痘番。我一直安慰自己捉片,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布汞舱。 她就那樣靜靜地躺著伍纫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昂芜。 梳的紋絲不亂的頭發(fā)上莹规,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音泌神,去河邊找鬼良漱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛欢际,可吹牛的內(nèi)容都是我干的母市。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼损趋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼患久!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蒋失,失蹤者是張志新(化名)和其女友劉穎返帕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篙挽,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荆萤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了铣卡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片观腊。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖算行,靈堂內(nèi)的尸體忽然破棺而出梧油,到底是詐尸還是另有隱情,我是刑警寧澤州邢,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布儡陨,位于F島的核電站,受9級(jí)特大地震影響量淌,放射性物質(zhì)發(fā)生泄漏骗村。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一呀枢、第九天 我趴在偏房一處隱蔽的房頂上張望胚股。 院中可真熱鬧,春花似錦裙秋、人聲如沸琅拌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)进宝。三九已至,卻和暖如春枷恕,著一層夾襖步出監(jiān)牢的瞬間党晋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工徐块, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留楔敌,地道東北人番宁。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓傅事,卻偏偏與公主長(zhǎng)得像叫挟,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子铜犬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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