iOS 휴대 전화 주소록 가 져 오 는 방법(최신)

최근 iOS 에서 모 바 일 주소록 을 받 는 방법 을 배 워 공유 하고 있 습 니 다.이 글 이 여러분 에 게 도움 이 되 기 를 바 랍 니 다.
1.iOS 9 이전 주소록 프레임 워 크
AddressBookUI 프레임 워 크:연락처 목록 인터페이스,연락처 상세 인터페이스,연락처 인터페이스 추가 등 을 제공 합 니 다.일반적으로 연락 처 를 선택 하 는 데 사 용 됩 니 다.
AddressBook 프레임 워 크:순수 C 언어의 API 는 연락처 데이터 만 얻 을 수 있 습 니 다.UI 인터페이스 디 스 플레이 를 제공 하지 않 았 습 니 다.연락처 디 스 플레이 인터페이스 를 직접 구축 해 야 합 니 다.
2.iOS 9 이후 최신 주소록 프레임 워 크
ContactsUI 프레임 워 크:AddressBookUI 프레임 워 크 의 모든 기능 을 가지 고 사용 하면 대상 을 더욱 대상 으로 합 니 다.
Contacts 프레임 워 크:AddressBook 프레임 워 크 의 모든 기능 을 가지 고 있 습 니 다.C 언어의 API 가 아니 라 사용 하기 가 매우 간단 합 니 다.
이번 에는 iOS 9 이후 휴대 전화 주소록 을 확보 하 는 방법 에 대해 서 말씀 드 리 겠 습 니 다.
필요 한 프레임 워 크

#import <ContactsUI/ContactsUI.h>
대 리 를 따르다

<CNContactPickerDelegate>
1.권한 수여 판단 요청

//          
if (status != CNAuthorizationStatusAuthorized) {

 UIAlertView * alart = [[UIAlertView alloc]initWithTitle:@"    " message:@"      APP       
- - " delegate:self cancelButtonTitle:@" " otherButtonTitles:nil, nil]; return; }
이것 은 다음 권한 수여 상태 와 AddressBook 의 차이 가 많 지 않 습 니 다.

typedef NS_ENUM(NSInteger, CNAuthorizationStatus)
{
/*!                         。 */
CNAuthorizationStatusNotDetermined = 0,

/*!                 。
 *              ,         (       )。 */
CNAuthorizationStatusRestricted,

/*!                     。 */
CNAuthorizationStatusDenied,

/*!                。 */
CNAuthorizationStatusAuthorized
}
판 가름

//                      
if (status == CNAuthorizationStatusNotDetermined)
{
CNContactStore *store = [CNContactStore new];
[store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
  if (granted){
    NSLog(@"    !");
  }else{
    NSLog(@"    !");
  }
}];
}
2.주소록 컨트롤 러 만 들 기

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//iOS 10
//  AB_DEPRECATED("Use CNContactPickerViewController from ContactsUI.framework instead")
CNContactPickerViewController * contactVc = [CNContactPickerViewController new];
contactVc.delegate = self;
[self presentViewController:contactVc animated:YES completion:nil];
}
iOS 10 기기 에서 이전 ABPeople PickerNavigation Controller 를 호출 하면 오래된 방법 이 바로 무 너 집 니 다.그래서 만약 에 예전 의 방법 을 사용한다 면 판본 판단 을 더 해 야 한다
3.프 록 시 방법 을 실현 하고 1 인 정 보 를 얻 습 니 다(1.이름 을 클릭 하여 자세 한 정 보 를 표시 합 니 다.2.자세 한 정 보 를 표시 하지 않 습 니 다)

//           
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty
{
CNContact *contact = contactProperty.contact;
NSString *name = [CNContactFormatter stringFromContact:contact style:CNContactFormatterStyleFullName];
CNPhoneNumber *phoneValue= contactProperty.value;
NSString *phoneNumber = phoneValue.stringValue;
NSLog(@"%@--%@",name, phoneNumber);
}
대리 방법 설명

// 1.        (     )
- (void)contactPicker:(CNContactPickerViewController   *)picker didSelectContact:(CNContact *)contact;

 :        ,        

// 2.            (    )
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty;

// 3.          
- (void)contactPickerDidCancel:(CNContactPickerViewController *)picker;
4.선택 한 반전 취소

- (void)contactPickerDidCancel:(CNContactPickerViewController *)picker{
[picker dismissViewControllerAnimated:YES completion:nil];
}
이 위의 과정 에서 주소록 에 있 는 한 사람의 정 보 를 얻 을 수 있 습 니 다.다음은 핸드폰 을 얻 는 전체적인 주소록 방법(모든 연락처 정 보 를 얻 을 수 있 습 니 다)을 말씀 드 리 겠 습 니 다.
5.모든 주소록 정보 획득

  //        
  CNContactStore *contactStore = [CNContactStore new];
  NSArray *keys = @[CNContactPhoneNumbersKey,CNContactGivenNameKey];
  //             
  CNContactFetchRequest *request = [[CNContactFetchRequest alloc] initWithKeysToFetch:keys];

  [contactStore enumerateContactsWithFetchRequest:request error:nil usingBlock:^(CNContact * _Nonnull contact, BOOL * _Nonnull stop) {

  //     
  //  NSString *firstName = contact.familyName;
  NSString *lastName = contact.givenName;

  NSLog(@"name: %@",lastName);

  //       

  for (CNLabeledValue *labeledValue in contact.phoneNumbers){

    CNPhoneNumber *phoneValue = labeledValue.value;
    NSString *phoneNumber = phoneValue.stringValue;
    NSLog(@"number: %@",phoneNumber);
  }
    }];

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기