iOS中如何访问用户的通讯录(三)

上一篇文章已经介绍了关于AddressBook.framework框架访问通讯的方法,今天来介绍一下利用RHAddressBook框架来实现访问用户通讯录:
该第三方框架地址为: RHAddressBook , 关于这个第三方框架的安装,请查看一下文档Using Static iOS Libraries

利用RHAddressBook访问用户的通讯录达到时候,首先需要用户进行授权,如果用户已经同意,才可以访问用户的通讯录信息:

让用户授权需要在AppDelegate里面实现 :

#import 

@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    // 1.获取授权状态
    RHAuthorizationStatus status = [RHAddressBook authorizationStatus];
    
    // 2.判断授权状态,如果未决定状态,则请求授权
    if (status == RHAuthorizationStatusNotDetermined) {
        // 3.创建通信录对象
        RHAddressBook *addressBook = [[RHAddressBook alloc] init];
        
        // 4.请求授权
        [addressBook requestAuthorizationWithCompletion:^(bool granted, NSError *error) {
            if (granted) {
                NSLog(@"授权成功");
            } else {
                NSLog(@"授权失败");
            }
        }];
    }
    
    return YES;
}



在完成授权以后,在进行访问用户的通讯录,代码如下:


#import "ViewController.h"
#import 

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    // 1.获取授权状态
    RHAuthorizationStatus status = [RHAddressBook authorizationStatus];
    
    // 2.判断如果是未授权,则直接返回
    if (status != RHAuthorizationStatusAuthorized) return;
    
    // 3.创建通信录
    RHAddressBook *addressBook = [[RHAddressBook alloc] init];
    
    // 4.获取所有的联系人
    NSArray *peopleArray = addressBook.people;
    
    // 5.遍历所有的联系人
    for (RHPerson *person in peopleArray) {
        
        // 6.获取联系人的姓名
        NSLog(@"%@ %@", person.firstName, person.lastName);
        
        // 7.获取电话号码
        RHMultiValue *phones = person.phoneNumbers;
        for (int i = 0; i < phones.count; i++) {
            // 8.获取电话号码和对应的Label
            NSString *phoneLabel = [phones labelAtIndex:i];
            NSString *phoneValue = [phones valueAtIndex:i];
            
            NSLog(@"%@ %@", phoneLabel, phoneValue);
        }
    }
}




关于访问用户通讯录的方法,已经介绍完,如果感觉对您有用,请您动动小手指点一个star,并关注我,您的支持是对我最大的支持!

你可能感兴趣的:(iOS中如何访问用户的通讯录(三))