如何从Contact Framework获取帐户名称

时间:2017-05-23 11:33:52

标签: ios iphone swift ios10.3

我们知道iOS中的联系人可以从GoogleiCloudPhone同步。好吧,我们可以使用Contacts.framework获取一堆联系人,但我想知道它属于哪个帐户。

我的意思是,我需要区分电子邮件和电话同步的联系人。有没有办法这样做?

我正在使用contact framework。我使用CNContainer获取标识符,但是如何获取存储联系人的帐户名称以及该帐户中该联系人的获取方式?

1 个答案:

答案 0 :(得分:0)

您可以尝试抓取所有容器吗?然后您可以根据容器名称对这些联系人进行分组

  -(void)fetchContacts
    {
   CNContactStore *store = [[CNContactStore alloc] init];    
   [store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
  if (granted == YES)
  {
        NSArray * contactContainerArray =  [store containersMatchingPredicate:nil error:nil];
        for(CNContainer * container in contactContainerArray) {
            NSLog(@"Container name == %@ ",container.name);
            NSPredicate *predicate = [CNContact predicateForContactsInContainerWithIdentifier:container.identifier];
            NSError *error;
            NSArray *cnContacts = [store unifiedContactsMatchingPredicate:predicate keysToFetch:keys error:&error];
            if (error)
            {
                NSLog(@"error fetching contacts %@", error);
            }
            else
            {
                for (CNContact *contact in cnContacts) {
                    NSMutableArray *contactNumbersArray = [[NSMutableArray alloc]init];
                    //  contact.givenName;
                    // contact.familyName;

                    for (CNLabeledValue *label in contact.phoneNumbers) {
                       // [label.value stringValue]; Phone Number
                    }

                }
            }
        }
            }
        }];
}