iOS 获取通讯录里边的电话号码AddressBook

时间:2022-04-26
本文章向大家介绍iOS 获取通讯录里边的电话号码AddressBook,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1  首先导入库 <AddressBook/AddressBook.h>

2 然后在导入#import <AddressBook/AddressBook.h>文件

3 声明  @property (nonatomic,assign) ABAddressBookRef addressBook;//电话簿

  并进行初始化   self.addressBook = ABAddressBookCreateWithOptions(NULL, NULL);

4 然后进行获取通讯录的操作

ABAddressBookRequestAccessWithCompletion(self.addressBook, ^(bool granted, CFErrorRef error) {
        if(!granted)
        {
            NSLog(@"未获得访问权限");
        }
        //权限状态
        ABAuthorizationStatus status = ABAddressBookGetAuthorizationStatus();
        if(status!=kABAuthorizationStatusAuthorized)
        {
            NSLog(@"未获得通讯录权限");
        }
        
        //取得记录
        CFArrayRef allPeopleCF = ABAddressBookCopyArrayOfAllPeople(self.addressBook);
        NSMutableArray *allPeople = (__bridge NSMutableArray *)(allPeopleCF);
        
        
        
        //过滤没用的号码
        for (int i = 0; i<allPeople.count; i++) {
            //获得记录
            ABRecordRef recordRef = (__bridge ABRecordRef)(allPeople[i]);
            //获得姓
            NSString *firstName = (__bridge NSString *)(ABRecordCopyValue(recordRef, kABPersonFirstNameProperty));
            //获得名
            NSString *lastName = (__bridge NSString *)(ABRecordCopyValue(recordRef, kABPersonLastNameProperty));
            //获得电话号码
            ABMultiValueRef phoneNumbersRef = ABRecordCopyValue(recordRef, kABPersonPhoneProperty);
            
            //获得电话号码的长度
            long count = ABMultiValueGetCount(phoneNumbersRef);
            //定义一个字符串用来接收电话号码
            NSString *numStr = @"";
            if (count>0) {
                //将ABMultiValueRef转换成nsstring类型的
                numStr = (__bridge NSString *)(ABMultiValueCopyValueAtIndex(phoneNumbersRef, 0));
                //去掉86 - 还有空格
                numStr = [numStr stringByReplacingOccurrencesOfString:@"+86" withString:@""];
                numStr = [numStr stringByReplacingOccurrencesOfString:@"-" withString:@""];
                numStr = [numStr stringByReplacingOccurrencesOfString:@" " withString:@""];
            }
            
            
            //如果最后的是11位 就表示符合条件
            if (numStr.length == 11){
                
//                //将电话号放在可变字符串里边方便作为参数
//                if(i ==allPeople.count-1){
//                    [self.allPhoneNum appendString:[NSString stringWithFormat:@"%@",numStr]];
//                }else{
//                    [self.allPhoneNum appendString:[NSString stringWithFormat:@"%@,",numStr]];}
//                
//                NSLog(@"self.allPhoneNum:%@",self.allPhoneNum);
                
                //将电话号码存起来
                [self.bookdatas addObject:numStr];
            }
            
            
        }
        
        
        
    });

然后用bookDatas 在tableview中进行展示就可以了