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);
}
}];
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.