首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Facebook或gmail或任何其他云iOS与cncontactstore取得联系

从Facebook或gmail或任何其他云iOS与cncontactstore取得联系
EN

Stack Overflow用户
提问于 2016-02-11 07:17:52
回答 2查看 760关注 0票数 0

目前,我正在使用这个代码片段从iPhone获取联系人。

代码语言:javascript
复制
 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或任何其他云获得联系?请帮助解决这个问题。

EN

回答 2

Stack Overflow用户

发布于 2017-07-13 05:18:29

我在这个问题上花了两天时间,但没有得到任何解决办法。

那就用一个补丁就行了。这是对我有用的。

代码语言:javascript
复制
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");
                }
票数 3
EN

Stack Overflow用户

发布于 2016-08-10 09:53:08

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

代码语言:javascript
复制
// 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];
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35333022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档