iOS中如何访问用户的通讯录(三)
2016-11-03 本文已影响91人
Paulpang
上一篇文章已经介绍了关于AddressBook.framework框架访问通讯的方法,今天来介绍一下利用RHAddressBook框架来实现访问用户通讯录:
该第三方框架地址为: RHAddressBook , 关于这个第三方框架的安装,请查看一下文档Using Static iOS Libraries
利用RHAddressBook访问用户的通讯录达到时候,首先需要用户进行授权,如果用户已经同意,才可以访问用户的通讯录信息:
让用户授权需要在AppDelegate里面实现 :
#import <RHAddressBook/AddressBook.h>
@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 <RHAddressBook/AddressBook.h>
@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,并关注我,您的支持是对我最大的支持!