获取通讯录

2018-06-14  本文已影响0人  Qy_iOS

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(@"====通讯录没有授权====");

    }

}

*转载记录

上一篇 下一篇

猜你喜欢

热点阅读