if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0) {
CNContactStore *store = [[CNContactStore alloc] init];
CNContactFetchRequest *request = [[CNContactFetchRequest alloc] initWithKeysToFetch:@[CNContactFamilyNameKey,CNContactGivenNameKey,CNContactPhoneNumbersKey]];
NSError *error = nil;
// NSMutableArray *nameArray = [[NSMutableArray alloc] init];
// NSMutableArray *phoneArray = [[NSMutableArray alloc]init];
NSMutableArray *ary = [[NSMutableArray alloc]init];
//执行获取通讯录请求,若通讯录可获取,flag为YES,代码块也会执行,若获取失败,flag为NO,代码块不执行
BOOL flag = [store enumerateContactsWithFetchRequest:request error:&error usingBlock:^(CNContact * _Nonnull contact, BOOL * _Nonnull stop) {
//去除数字以外的所有字符
NSCharacterSet *setToRemove = [[ NSCharacterSet characterSetWithCharactersInString:@"0123456789"]
invertedSet ];
NSString *strPhone = @"" ;
if (contact.phoneNumbers.count>0) {
strPhone = [[[contact.phoneNumbers firstObject].value.stringValue componentsSeparatedByCharactersInSet:setToRemove] componentsJoinedByString:@"" ];
NSLog(@"%@",strPhone);
}
//[phoneArray addObject:strPhone];
NSString *name = @"";
if ([NSString stringWithFormat:@"%@%@",contact.familyName,contact.givenName]) {
name = [NSString stringWithFormat:@"%@ %@",contact.familyName,contact.givenName];
}
NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
[dict setObject:strPhone forKey:@"phoneNum"];
[dict setObject:name forKey:@"name"];
//[nameArray addObject:name];
[ary addObject:dict];
}];
if (flag) {
// NSLog(@"手机号%@",[phoneArray componentsJoinedByString:@","]);
// NSLog(@"名字%@",[nameArray componentsJoinedByString:@","]);
NSLog(@"%@",ary);
}
}else{
NSMutableArray *nameArray = [[NSMutableArray alloc] init];
NSMutableArray *phoneArray = [[NSMutableArray alloc]init];
CFErrorRef *error = nil;
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error);
__block BOOL accessGranted = NO;
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
accessGranted = granted;
dispatch_semaphore_signal(sema);
});
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
if (accessGranted) {
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople (addressBook);
CFIndex nPeople = ABAddressBookGetPersonCount (addressBook);
for ( NSInteger i = 0 ; i < nPeople; i++)
{
ABRecordRef person = CFArrayGetValueAtIndex (allPeople, i);
NSString *givenName = (__bridge NSString *)(ABRecordCopyValue (person, kABPersonFirstNameProperty )) == nil ? @"" : (__bridge NSString *)(ABRecordCopyValue (person, kABPersonFirstNameProperty ));
NSString *familyName = (__bridge NSString *)(ABRecordCopyValue (person, kABPersonLastNameProperty )) == nil ? @"" : (__bridge NSString *)(ABRecordCopyValue (person, kABPersonLastNameProperty ));
ABMultiValueRef phoneNumbers = ABRecordCopyValue(person, kABPersonPhoneProperty);
NSArray *array = CFBridgingRelease(ABMultiValueCopyArrayOfAllValues(phoneNumbers));
NSString *phoneNumber = @"";
if (array.count > 0) {
phoneNumber = [array firstObject];
}
NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:[NSString stringWithFormat:@"%@%@",familyName,givenName],@"name",phoneNumber,@"phone",[NSNumber numberWithBool:NO],@"isUser",nil];
NSLog(@"%@",dic);
//去除数字以外的所有字符
NSCharacterSet *setToRemove = [[ NSCharacterSet characterSetWithCharactersInString:@"0123456789"]
invertedSet ];
NSString *strPhone = [[phoneNumber componentsSeparatedByCharactersInSet:setToRemove] componentsJoinedByString:@""];
[phoneArray addObject:strPhone];
NSString *name = [NSString stringWithFormat:@"%@%@",familyName,givenName];
[nameArray addObject:name];
}
NSLog(@"手机号%@",[phoneArray componentsJoinedByString:@","]);
NSLog(@"名字%@",[nameArray componentsJoinedByString:@","]);
}
}