Get full name, email id, phone number, profile picture and date of birth from contact structure in iOS9
#pragma mark #pragma mark -- Getting Contacts From AddressBook -(void)contactsDetailsFromAddressBook{ //ios 9+ CNContactStore *store = [[CNContactStore alloc] init]; [store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) { if (granted == YES) { //keys with fetching properties NSArray *keys = @[CNContactBirthdayKey,CNContactFamilyNameKey, CNContactGivenNameKey, CNContactPhoneNumbersKey, CNContactImageDataKey, CNContactEmailAddressesKey]; NSString *containerId = store.defaultContainerIdentifier; NSPredicate *predicate = [CNContact predicateForContactsInContainerWithIdentifier:containerId]; NSError *error; NSArray *cnContacts = [store unifiedContactsMatchingPredicate:predicate keysToFetch:keys error:&error]; if (error) { NSLog(@"error fetching contacts %@", error); } else { NSString *phone; NSString *fullName; NSString *firstName; NSString *lastName; UIImage *profileImage; NSDateComponents *birthDayComponent; NSMutableArray *contactNumbersArray; NSString *birthDayStr; NSMutableArray *emailArray; NSString* email = @""; for (CNContact *contact in cnContacts) { // copy data to my custom Contacts class. firstName = contact.givenName; lastName = contact.familyName; birthDayComponent = contact.birthday; if (birthDayComponent == nil) { // NSLog(@"Component: %@",birthDayComponent); birthDayStr = @"DOB not available"; }else{ birthDayComponent = contact.birthday; NSInteger day = [birthDayComponent day]; NSInteger month = [birthDayComponent month]; NSInteger year = [birthDayComponent year]; // NSLog(@"Year: %ld, Month: %ld, Day: %ld",(long)year,(long)month,(long)day); birthDayStr = [NSString stringWithFormat:@"%ld/%ld/%ld",(long)day,(long)month,(long)year]; } if (lastName == nil) { fullName=[NSString stringWithFormat:@"%@",firstName]; }else if (firstName == nil){ fullName=[NSString stringWithFormat:@"%@",lastName]; } else{ fullName=[NSString stringWithFormat:@"%@ %@",firstName,lastName]; } UIImage *image = [UIImage imageWithData:contact.imageData]; if (image != nil) { profileImage = image; }else{ profileImage = [UIImage imageNamed:@"placeholder.png"]; } for (CNLabeledValue *label in contact.phoneNumbers) { phone = [label.value stringValue]; if ([phone length] > 0) { [contactNumbersArray addObject:phone]; } } ////Get all E-Mail addresses from contacts for (CNLabeledValue *label in contact.emailAddresses) { email = label.value; if ([email length] > 0) { [emailArray addObject:email]; } } //NSLog(@"EMAIL: %@",email); NSDictionary* personDict = [[NSDictionary alloc] initWithObjectsAndKeys: fullName,@"fullName",profileImage,@"userImage",phone,@"PhoneNumbers",birthDayStr,@"BirthDay",email,@"userEmailId", nil]; // NSLog(@"Response: %@",personDict); [self.contactsArray addObject:personDict]; } dispatch_async(dispatch_get_main_queue(), ^{ [self.tableViewRef reloadData]; }); } } }]; }
Mannam Brahmam Apr 26 '16 at 11:30 2016-04-26 11:30
source share