一.ContactsUI的使用
使用步骤创建选择联系人控制器
设置代理
实现代理方法(在代理方法中拿到用户选择的联系人)
弹出控制器
代码实现
pragma mark - <CNContactPickerViewController代理方法>
/** * 当选中一个联系人时,会执行该方法 * *
@param picker 选择联系人的控制器 *
@param contact 选择的联系人
*/
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact{
// 1.获取联系人的姓名
NSString *firstName = contact.givenName;
NSString *lastName = contact.familyName;
NSLog(@"%@ %@", firstName, lastName);
// 2.获取联系人的电话号码
NSArray *phoneNumers = contact.phoneNumbers;
for (CNLabeledValue *labelValue in phoneNumers) {
CNPhoneNumber *phoneNumber = labelValue.value;
NSString *phoneValue = phoneNumber.stringValue;
NSString *phoneLabel = labelValue.label;
NSLog(@"%@ %@", phoneValue, phoneLabel);
}
}
/** * 当选中某一个联系人的某一个属性时,会执行该方法 * *
@param contactProperty 选中的联系人属性
*/
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty{}
二.Contacts的使用
// 1.获取授权状态
CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
// 2.如果不是已经授权,则直接返回
if (status != CNAuthorizationStatusAuthorized) return;
// 3.获取联系人
// 3.1.创建联系人仓库
CNContactStore *store = [[CNContactStore alloc] init];
// 3.2.创建联系人的请求对象
// keys决定这次要获取哪些信息,比如姓名/电话
NSArray *fetchKeys = @[CNContactGivenNameKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey];
CNContactFetchRequest *request = [[CNContactFetchRequest alloc] initWithKeysToFetch:fetchKeys];
// 3.3.请求联系人
NSError *error = nil;
[store enumerateContactsWithFetchRequest:request error:&error usingBlock:^(CNContact * _Nonnull contact, BOOL * _Nonnull stop) {
// stop是决定是否要停止
// 1.获取姓名
NSString *firstname = contact.givenName;
NSString *lastname = contact.familyName;
NSLog(@"%@ %@", firstname, lastname);
// 2.获取电话号码
NSArray *phones = contact.phoneNumbers;
// 3.遍历电话号码
for (CNLabeledValue *labelValue in phones) {
CNPhoneNumber *phoneNumber = labelValue.value;
NSLog(@"%@ %@", phoneNumber.stringValue, labelValue.label);
}
}];