iOS9之后获取通信录

2015-12-11  本文已影响979人  iOS小王子

一.ContactsUI的使用
使用步骤创建选择联系人控制器
设置代理
实现代理方法(在代理方法中拿到用户选择的联系人)
弹出控制器
代码实现

pragma mark - <CNContactPickerViewController代理方法>

/** * 当选中一个联系人时,会执行该方法 * *
@param picker 选择联系人的控制器 *
@param contact 选择的联系人
*/

/** * 当选中某一个联系人的某一个属性时,会执行该方法 * *
@param 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);
    }
}];
上一篇 下一篇

猜你喜欢

热点阅读