通过Facebook、gmail或任何其他云iOS与cncontactstore取得联系
目前,我正在使用此代码片段从iPhone获取联系人通过Facebook、gmail或任何其他云iOS与cncontactstore取得联系,ios,objective-c,iphone,ios9,cncontactstore,Ios,Objective C,Iphone,Ios9,Cncontactstore,目前,我正在使用此代码片段从iPhone获取联系人 CNContactStore *store = [[CNContactStore alloc] init]; [store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) { if (granted == YES) { //k
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或任何其他云获取联系?
请注意这一点。您必须获取联系人的所有容器,并从单个容器中获取联系人并将其合并
// 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];
}
您必须获取联系人的所有容器,从单个容器中获取联系人并合并它们
// 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];
}
我花了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天时间解决这个问题,但没有得到任何解决方案 然后用一个补丁就可以了。这是为我工作
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");
}