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

上一篇文章已经介绍了关于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,并关注我,您的支持是对我最大的支持!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,037评论 25 709
  • 上一篇文章已经介绍了关于AddressBookUI.framework框架访问通讯的方法,这种方法是有界面展示到用...
    Paulpang阅读 4,071评论 0 4
  • 今天周三,感觉日子怎么过的这么慢,很想回去看看教室的情况,班主任,估计都有一种牵挂,这种牵挂大多是担心孩子捣乱...
    咖妹阅读 1,684评论 0 6
  • 走在回宿舍的路上,眼前闪过一个送外卖的阿姨。 头发有些凌乱,在风中张牙舞爪。暗沉的皮肤加上爬上眉头的皱纹,左顾右盼...
    二星瓢虫侠阅读 2,958评论 2 1
  • 生活给我们的一般多,在于你怎么去看了,你怎么想着,生活它就坚挺挺的竖着,总有不如意别人的,别人也总有不如意你的,但...
    Joker吉阅读 1,612评论 0 1

友情链接更多精彩内容