美文网首页
iOS9之后获取通信录

iOS9之后获取通信录

作者: iOS小王子 | 来源:发表于2015-12-11 12:34 被阅读979次

一.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);
    }
}];

相关文章

网友评论

      本文标题:iOS9之后获取通信录

      本文链接:https://www.haomeiwen.com/subject/owyyhttx.html