iOS10 - 访问系统通讯录新方法

时间:2023-03-09 03:23:20
iOS10 - 访问系统通讯录新方法
  • 所需框架
#import <ContactsUI/ContactsUI.h>
  • 遵循代理
CNContactPickerDelegate
  • 调用通讯录
    • 如果在iOS10的机器上调用以前的ABPeoplePickerNavigationController老方法将直接崩溃.
-(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:^{ }];
}
  • 选择完成代理回调
#pragma mark - 用户点击联系人获取方法 两个方法都写只调用此方法
-(void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact{ // NSLog(@"contact : %@",contact); // 姓氏 名字
NSLog(@"name:%@%@",contact.familyName,contact.givenName); //公司名
NSLog(@"公司: %@",contact.organizationName); //获取通讯录某个人所有电话并存入数组中 需要哪个取哪个
NSMutableArray * arrMPhoneNums = [NSMutableArray array];
for (CNLabeledValue * labValue in contact.phoneNumbers) { NSString * strPhoneNums = [labValue.value stringValue];
NSLog(@"所有电话是: %@",strPhoneNums);
[arrMPhoneNums addObject:strPhoneNums];
} //所有邮件地址数组
NSMutableArray * arrMEmails = [NSMutableArray array];
for (CNLabeledValue * labValue in contact.emailAddresses) { NSLog(@"email : %@",labValue.value);
[arrMEmails addObject:labValue.value];
}
[picker dismissViewControllerAnimated:YES completion:nil];
}
  • 用户点某个联系人进去获取属性调用的方法 例如从通讯录选择联系人打电话两个方法都写只调用上面方法
#pragma mark - 用户点进去获取属性调用方法 例如从通讯录选择联系人打电话两个方法都写只调用上面方法
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty{ // NSLog(@"contactProperty : %@",contactProperty);
// NSLog(@"contact : %@",contactProperty.contact);
// NSLog(@"key : %@",contactProperty.key);
// [[UIApplication sharedApplication] openURL:url];
// NSLog(@"identifier : %@",contactProperty.identifier);
// NSLog(@"label : %@",contactProperty.label); //获得点击的属性,在此进行处理...
NSLog(@"value : %@",[contactProperty.value stringValue]);
[picker dismissViewControllerAnimated:YES completion:nil];
}
  • 取消选择回调
- (void)contactPickerDidCancel:(CNContactPickerViewController *)picker{

    [picker dismissViewControllerAnimated:YES completion:nil];
}