【问题标题】:get Contact with cncontactstore from Facebook or gmail or any other cloud iOS从 Facebook 或 gmail 或任何其他云 iOS 获取与 cncontactstore 的联系
【发布时间】:2016-02-11 07:17:52
【问题描述】:

目前我正在使用此代码 sn-p 从 iPhone 获取联系人

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

    [store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
        if (granted == YES) {
            //keys with fetching properties
            NSArray *keys = @[CNContactGivenNameKey,CNContactFamilyNameKey,  CNContactPhoneNumbersKey, CNContactImageDataKey];

            [[CNContactsUserDefaults sharedDefaults] sortOrder];
            NSString *containerId = store.defaultContainerIdentifier;
            //NSComparator hg=   [CNContact comparatorForNameSortOrder:CNContactSortOrderGivenName];

            NSPredicate *predicate = [CNContact predicateForContactsInContainerWithIdentifier:containerId];
            NSError *error;
            NSArray *cnContacts = [store unifiedContactsMatchingPredicate:predicate keysToFetch:keys error:&error];

            NSSortDescriptor *sortDescriptor;
            sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"givenName"
                                                         ascending:YES];
            NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
            NSArray *sortedArray = [cnContacts sortedArrayUsingDescriptors:sortDescriptors];

}];

但在这里我只从 iCloud 获取联系人。

我如何从 Facebook、gmail 或任何其他云获取联系方式? 请帮忙考虑一下。

【问题讨论】:

    标签: ios objective-c iphone ios9 cncontactstore


    【解决方案1】:

    我为这个问题花了 2 天时间,但没有得到任何解决方案。

    然后用一个补丁就完成了。这对我有用。

    if ([container.name isEqualToString:@"Card"]) {
                        NSLog(@"iCloud");
                    }else if ([container.name isEqualToString:@"Address Book"]){
                        NSLog(@"google");
                    }else if ([container.name isEqualToString:@"Contacts"]){
                        NSLog(@"Yahoo");
                    }else{
                        NSLog(@"Other");
                    }
    

    【讨论】:

      【解决方案2】:

      您必须获取联系人的所有容器并从单个容器中获取联系人并将它们合并。

      // Get all containers of contacts like icloud contacts , gmail contacts and show all data
          NSArray *allContainers = [store containersMatchingPredicate:nil error:nil];
      
      for (CNContainer *container in allContainers) {
              // create predicate using cncontactstore identifier
              NSPredicate *predicate = [CNContact predicateForContactsInContainerWithIdentifier:container.identifier];
      
              // get array of contact using predicate
              NSArray *arrContacts = [[[CNContactStore alloc] init] unifiedContactsMatchingPredicate:predicate keysToFetch:keysToFetch error:nil];
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-29
        • 1970-01-01
        • 1970-01-01
        • 2021-09-15
        相关资源
        最近更新 更多