標籤:
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
通訊錄(ios內建無介面)