读取手机联系人信息

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];

        

        //执行获取通讯录请求,若通讯录可获取,flagYES,代码块也会执行,若获取失败,flagNO,代码块不执行

        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:@","]);

        }

        

        

    }


你可能感兴趣的:(读取手机联系人信息)