美文网首页
获取通讯录

获取通讯录

作者: Qy_iOS | 来源:发表于2018-06-14 10:44 被阅读0次

1.#import <Contacts/Contacts.h>      

 // 授权获取通讯录

Plist 文件中添加授权权限(Privacy - Contacts Usage Description)

2.添加代码在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

CNAuthorizationStatus authorizationStatus = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];

    if(authorizationStatus ==CNAuthorizationStatusNotDetermined) {

        CNContactStore*contactStore = [[CNContactStore alloc]init];

        [contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted,NSError*_Nullable error) {

            if(granted) {

                NSLog(@"通讯录获取授权成功==");

                [self getContact]; //5.获取用户通讯录

            }else{

                NSLog(@"授权失败, error=%@", error);

            }

        }];

    }

}

- (void)getContact{

    CNAuthorizationStatus authorizationStatus = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];

    if(authorizationStatus ==CNAuthorizationStatusAuthorized) {

        // 获取指定的字段,并不是要获取所有字段,需要指定具体的字段

        NSArray*keysToFetch =@[CNContactGivenNameKey,CNContactFamilyNameKey,CNContactPhoneNumbersKey];

        CNContactFetchRequest*fetchRequest = [[CNContactFetchRequest alloc]initWithKeysToFetch:keysToFetch];

        CNContactStore*contactStore = [[CNContactStore alloc]init];

        //创建一个保存通讯录的数组

        NSMutableArray *contactArr = [NSMutableArray array];

        [contactStore enumerateContactsWithFetchRequest:fetchRequest error:nil usingBlock:^(CNContact*_Nonnull contact,BOOL*_Nonnull stop) {

            NSLog(@"-------------------------------------------------------");

            NSString*givenName = contact.givenName;

            NSString*familyName = contact.familyName;

            NSLog(@"givenName=%@, familyName=%@", givenName, familyName);

            NSArray*phoneNumbers = contact.phoneNumbers;

            for(CNLabeledValue*labelValue in phoneNumbers) {

                NSString*label = labelValue.label;

                CNPhoneNumber*phoneNumber = labelValue.value;

                NSString *nameStr = [NSString stringWithFormat:@"%@%@",contact.familyName,contact.givenName];

//                NSDictionary*contact =@{@"phone":phoneNumber.stringValue,@"user":FORMAT(@"%@%@",familyName,givenName)};

                NSDictionary*contact =@{@"phone":phoneNumber.stringValue,@"user":nameStr};

                [contactArr addObject:contact];

                NSLog(@"label=%@, phone=%@", label, phoneNumber.stringValue);

            }

            //*stop = YES;// 停止循环,相当于break;

        }];

        _contactArr= contactArr;

        NSError*error;

        NSData*jsonData = [NSJSONSerialization dataWithJSONObject:contactArr options:NSJSONWritingPrettyPrinted error:&error];//此处data参数是我上面提到的key为"data"的数组

        NSString*jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];

        _jsonString= jsonString;

        NSLog(@"jsonString====%@",jsonString);

//        [self postContactTo]; //6.上传通讯录

    }else{

        NSLog(@"====通讯录没有授权====");

    }

}

*转载记录

相关文章

  • IOS 获取手机通讯录

    //获取通讯录 -(void)GetUserAddressBook { //获取通讯录权限 ABAddressBo...

  • iOS获取通讯录信息

    获取通讯录的信息有两种 1.在不弹出通讯录控制器的情况下获取所有的通讯录信息 2.通过弹窗获取通讯录的某个用户信息...

  • 获取通讯录联系人信息(Swift)

    一.通讯录开发 1.获取用户手机通讯录中的联系人 2.通过获取通讯录信息,可以在应用中添加好友 二.如何获取用户的...

  • 获取通讯录--AddressBookUI的使用

    一. 通讯录的简介 通讯录获取主要用于一些即时通讯App, 如微信, 可以获取你的手机通讯录, 查看哪些好友注册了...

  • iOS9.0之前和之后获取通讯录的方法

    1. iOS 9.0之前获取通讯录的方法 打印结果: 2. iOS 9.0 及 iOS 9.0之后获取通讯录的方法...

  • iOS通讯录开发

    前言 记录下在应用内获取通讯录的相关知识点,涉及到通讯录权限配置,通讯录数据的获取以及数据按首字母排序。 系统通讯...

  • 通讯录处理

    /** 获取通讯录 **/-(void)getAddressBookList{NSMutableArray *ar...

  • Android通讯录(6.0)操作简介

    添加权限 Android6.0获取手机通讯录动态权限 获取权限回调 读取手机联系人通讯录 共享数据监听 注册监听通...

  • 获取通讯录-AddressBook

    获取系统的通讯录,自定义界面

  • 获取通讯录

    1.#import // 授权获取通讯录 2.添加代码在- (B...

网友评论

      本文标题:获取通讯录

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