iOS開發之提取本地通訊錄數據

向凡神致敬~


iOS中若需獲取本地通訊錄數據需在工程中導入以下庫:AddressBook.framework

獲取本地通訊錄數據示例程序如下:

[objc] view plain copy
 print?在CODE上查看代碼片派生到我的代碼片
  1. #pragma mark - 獲取手機所有聯繫人  
  2. - (void)obtainPhoneAllContact  
  3. {  
  4.     //這個變量用於記錄授權是否成功,即用戶是否允許我們訪問通訊錄  
  5.     int   __block tip=0;  
  6.     //聲明一個通訊簿的引用  
  7.     ABAddressBookRef addBook =nil;  
  8.     //因爲在IOS6.0之後和之前的權限申請方式有所差別,這裏做個判斷  
  9.     if   ([[UIDevice currentDevice].systemVersion floatValue]>=6.0) {  
  10.         //創建通訊簿的引用  
  11.         addBook=ABAddressBookCreateWithOptions(NULLNULL);  
  12.         //創建一個出事信號量爲0的信號  
  13.         dispatch_semaphore_t sema=dispatch_semaphore_create(0);  
  14.         //申請訪問權限  
  15.         ABAddressBookRequestAccessWithCompletion(addBook, ^( bool   greanted, CFErrorRef error)        {  
  16.             //greanted爲YES是表示用戶允許,否則爲不允許  
  17.             if   (!greanted) {  
  18.                 tip=1;  
  19.             }  
  20.             //發送一次信號  
  21.             dispatch_semaphore_signal(sema);  
  22.         });  
  23.         //等待信號觸發  
  24.         dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);  
  25.     } else {  
  26.         //IOS6之前  
  27.         addBook =ABAddressBookCreate();  
  28.     }  
  29.     if   (tip) {  
  30.         //做一個友好的提示  
  31.         UIAlertView * alart = [[UIAlertView alloc]initWithTitle:@ "溫馨提示"   message:@ "請您設置允許APP訪問您的通訊錄\nSettings>General>Privacy"   delegate:self cancelButtonTitle:@ "確定"   otherButtonTitles:nil, nil nil];  
  32.         [alart show];  
  33.         return ;  
  34.     }  
  35.       
  36.     //獲取所有聯繫人的數組  
  37.     CFArrayRef allLinkPeople = ABAddressBookCopyArrayOfAllPeople(addBook);  
  38.     //獲取聯繫人總數  
  39.     CFIndex number = ABAddressBookGetPersonCount(addBook);  
  40.     //進行遍歷  
  41.     for   (NSInteger i=0; i<number; i++) {  
  42.         //獲取聯繫人對象的引用  
  43.         ABRecordRef  people = CFArrayGetValueAtIndex(allLinkPeople, i);  
  44.         //獲取當前聯繫人名字  
  45.         NSString*firstName=(__bridge NSString *)(ABRecordCopyValue(people, kABPersonFirstNameProperty));  
  46.         //獲取當前聯繫人姓氏  
  47.         NSString*lastName=(__bridge NSString *)(ABRecordCopyValue(people, kABPersonLastNameProperty));  
  48.           
  49.         //獲取當前聯繫人的公司  
  50.         NSString*organization=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonOrganizationProperty));  
  51.         //獲取當前聯繫人的職位  
  52.         NSString*job=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonJobTitleProperty));  
  53.         //獲取當前聯繫人的部門  
  54.         NSString*department=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonDepartmentProperty));  
  55.         //獲取當前聯繫人的電話 數組  
  56.         NSMutableArray * phoneArr = [[NSMutableArray alloc]init];  
  57.         ABMultiValueRef phones= ABRecordCopyValue(people, kABPersonPhoneProperty);  
  58.         for   (NSInteger j=0; j<ABMultiValueGetCount(phones); j++) {  
  59.             [phoneArr addObject:(__bridge NSString *)(ABMultiValueCopyValueAtIndex(phones, j))];  
  60.         }  
  61.           
  62.         //獲取當前聯繫人頭像圖片  
  63.         NSData*userImage=(__bridge NSData*)(ABPersonCopyImageData(people));  
  64.           
  65.         if (lastName == NULL) {  
  66.             NSLog(@"姓名:%@",firstName);  
  67.         }  
  68.         else if (firstName == NULL)  
  69.         {  
  70.             NSLog(@"姓名:%@",lastName);  
  71.         }  
  72.         else if(firstName != NULL && lastName != NULL){  
  73.             NSLog(@"姓名:%@%@",lastName,firstName);  
  74.         }  
  75.         NSString *str = phoneArr;  
  76.         NSLog(@"聯繫電話:%@",phoneArr);  
  77.           
  78.         if (userImage == NULL) {  
  79.             NSLog(@"頭像爲空");  
  80.         }  
  81.     }  
  82. }  





本文有因爲問題請聯繫

QQ:563699115

Telephone:18341266547


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章