1,添加框架AddressBook.framework
2,请求权限认证,在Appdelegate.m文件中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
/*
kABAuthorizationStatusNotDetermined = 0, 没有决定是否授权
kABAuthorizationStatusRestricted, 受限制
kABAuthorizationStatusDenied, 拒绝
kABAuthorizationStatusAuthorized 授权
*/
//请求用户授权
if(ABAddressBookGetAuthorizationStatus()==kABAuthorizationStatusNotDetermined)
{
ABAddressBookRef book=ABAddressBookCreateWithOptions(NULL, NULL);
ABAddressBookRequestAccessWithCompletion(book, ^(bool granted, CFErrorRef error) {
if (granted) {
NSLog(@"授权成功");
}
else
{
NSLog(@"授权失败,%@",error);
}
});
}
return YES;
}
3,控制器中实现
#import "ViewController.h"
#import <AddressBook/AddressBook.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// /*
// kABAuthorizationStatusNotDetermined = 0, 没有决定是否授权
// kABAuthorizationStatusRestricted, 受限制
// kABAuthorizationStatusDenied, 拒绝
// kABAuthorizationStatusAuthorized 授权
// */
// //请求用户授权
// if(ABAddressBookGetAuthorizationStatus()==kABAuthorizationStatusNotDetermined)
// {
// ABAddressBookRef book=ABAddressBookCreateWithOptions(NULL, NULL);
// ABAddressBookRequestAccessWithCompletion(book, ^(bool granted, CFErrorRef error) {
// if (granted) {
// NSLog(@"授权成功");
// }
// else
// {
// NSLog(@"授权失败,%@",error);
// }
// });
//
// }
}
//获取数据
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//1.创建通讯录
ABAddressBookRef book=ABAddressBookCreateWithOptions(NULL, NULL);
//获取所有联系人记录
CFArrayRef multivalues=ABAddressBookCopyArrayOfAllPeople(book);
CFIndex count=CFArrayGetCount(multivalues);
for (CFIndex i=0; i<count; ++i) {
ABRecordRef record=CFArrayGetValueAtIndex(multivalues, i);
CFStringRef first=ABRecordCopyValue(record, kABPersonFirstNameProperty);
CFStringRef last=ABRecordCopyValue(record, kABPersonLastNameProperty);
NSLog(@"%@,%@",(__bridge_transfer NSString*)first,(__bridge_transfer NSString*)last);
ABMultiValueRef multiPhones=ABRecordCopyValue(record, kABPersonPhoneProperty);
CFIndex countPhone=ABMultiValueGetCount(multiPhones);
for (int j=0; j<countPhone; j++) {
CFStringRef phone=ABMultiValueCopyValueAtIndex(multiPhones, j);
NSLog(@"phone=%@",(__bridge_transfer NSString*)phone);
}
CFRelease(multiPhones);
}
CFRelease(multivalues);
CFRelease(book);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end