美文网首页
获取通讯录--RHAddressBook三方框架

获取通讯录--RHAddressBook三方框架

作者: 面糊 | 来源:发表于2016-06-02 20:23 被阅读412次

    一. RHAddressBook的使用准备

    1. RHAddressBook(GitHub上面有下载), 是对AddressBook的一层面向对象的封装, 他将原本CoreFoundation的各种函数, 都较好的封装为了面向对象的OC方法
    2. 该三方框架属于历史悠久了, 并且原作者已经不对其进行更新了, 但是功能上还是一款比较好用的第三方框架
    3. 在此只是对这个框架做一些简单实用的介绍, 建议大家有兴趣的简单研究一下, 然后尽量使用苹果原生的AddressBook去封装

    二. 基本使用介绍

    1. 使用准备:

      1. 该框架是一个工程项目, 因此不只是拖入工程就可以使用的
      2. 首先, 将整个工程拖入项目
        • 将整个工程项目, 拖入你项目所在的目录中
        • 将项目文件: RHAddressBook.xcodeproj拖入到你的项目中
      3. 添加依赖
        • 在项目工程文件中: Build Phases -> Target Dependencies -> +RHAddressBook.a
        • 同页面下: Link Binary With Libraries -> +libRHAddressBook.a
        • 在项目工程文件中: Build Setting -> 搜索Other Linker Flags -> 添加两个选项(-ObjC和-all_load)
        • 导入头文件: <RHAddressBook/RHAddressBook.h>
    2. 使用框架获取所有通讯录的信息:

      1. 首先要请求通讯录的访问授权

        • 使用方法与AddressBook基本相同

        • 根据当前的授权状态来判断是否可以申请授权

            // 请求授权
            - (void)getAuthor {
                // 1. 判断当前App对通讯录访问的授权状态
                if ([RHAddressBook authorizationStatus] == RHAuthorizationStatusNotDetermined) {
                    // 2. 创建通讯录对象
                    RHAddressBook *addressBook = [[RHAddressBook alloc] init];
                    // 3. 发送授权申请, 根据回调来判断是否授权成功
                    [addressBook requestAuthorizationWithCompletion:^(bool granted, NSError *error) {
                        if (granted) {
                            NSLog(@"授权成功");
                        } else {
                            NSLog(@"授权失败");
                        }
                    }];
                }
            }
          
      2. 获取通讯录所有联系人的信息

         - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
             
             // 1. 创建通讯录对象
             RHAddressBook *addressBook = [[RHAddressBook alloc] init];
             
             // 2. 获取所有联系人信息
             NSArray *allPeople = [addressBook people];
             
             // 3. 获取联系人的数量
             NSUInteger count = [addressBook numberOfPeople];
             
             // 4. 遍历联系人信息
             for (int i = 0; i < count; i++) {
                 
                 // 5. 创建单个联系人对象
                 RHPerson *person = allPeople[i];
                 NSLog(@"%@", person.name);
                 
                 // 6. 创建多信息对象, 遍历获取电话号码
                 RHMultiStringValue *strValue = person.phoneNumbers;
                 for (int i = 0; i < strValue.count; i++) {
                     NSLog(@"%@---%@", [strValue localizedLabelAtIndex:i], [strValue valueAtIndex:i]);
                 }
             }
         }

    相关文章

      网友评论

          本文标题:获取通讯录--RHAddressBook三方框架

          本文链接:https://www.haomeiwen.com/subject/soykdttx.html