[转]IOS如何访问通讯录
2015-06-05 10:54
597 查看
1.获取访问授权
[objc] viewplaincopy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
<pre name="code" class="objc">#import "AppDelegate.h"
#import <AddressBook/AddressBook.h>
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//1.获取授权状态
ABAuthorizationStatus type = ABAddressBookGetAuthorizationStatus();
//授权申请
if (type == kABAuthorizationStatusNotDetermined) {
ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL);
ABAddressBookRequestAccessWithCompletion(book, ^(bool granted, CFErrorRef error) {
if (granted) {
NSLog(@"授权允许");
}else{
NSLog(@"授权拒绝");
}
});
//释放book
CFRelease(book);
}
return YES;
}
2.RH导入RHAddressBook框架
RHAddressBook框架地址: https://github.com/heardrwt/RHAddressBook
3.获取联系人信息
[objc] viewplaincopy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
#import "ViewController.h"
#import "AddressBook.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
//创建通讯录对象
RHAddressBook* book = [[RHAddressBook alloc] init];
//获取通讯录所有人员
NSArray* people = book.people;
for (RHPerson *p in people) {
//获取人员的firstName
NSString* firstName = p.firstName;
//获取人员的lastName
NSString* lastName = p.lastName;
//获取该人员的号码(号码有多个,所以用RHMultiValue)
RHMultiValue* phoneNumbers = p.phoneNumbers;
NSUInteger phoneNumberCount = phoneNumbers.count;
for (int i = 0; i < phoneNumberCount; i++) {
//遍历每个号码中的label(比如:手机 家庭 公司)
NSString* label = [phoneNumbers labelAtIndex:i];
//遍历出号码
NSString* nember = [phoneNumbers valueAtIndex:i];
NSLog(@"%@, %@ ,%@,%@",firstName,lastName,label,nember);
}
}
}
@end
4.注意点
如果你导入RHAddressBook 框架报错,是应为框架中pch文件包含了 #import "RHARCSupport.h" ,所以你包把这个头文件包含到你自己项目的pch文件中. 如果用的是xcode6,请参考xcode6中如何创建pch文件相关文章推荐
- iOS开发 tabBarController选中状态
- [iOS]CocoaPods安装
- iOS 绘图详解
- iOS 6导入PCH,开发必备
- iOS开发 判断扫码是否为有效网址
- 升级成iOS8后程序不能定位的问题解决
- IOS开发系列--学习资料整理
- ios开发:zxing 二维码
- 猫猫学iOS 之微博项目实战(1)微博主框架-子控制器的添加
- iOS 检测SDWebImage有没有缓存图片
- iOS 新手误区,GET和POST的区别
- iOS 怎么让tableView滑动最底端
- iOS 绘制1像素线条问题
- 如何处理iOS中照片的方向
- 只要你想 并为之努力 你就能!
- 转:ios导航栏设置
- 如何处理iOS中照片的方向
- iOS 无限后台
- 友盟 - iOS 消息推送 (Message) 证书设置指南
- IOS学习路线图