2016-02-03 3 views
-2

Я работаю над ios app.I должен реализовать импорт контактов (идентификаторов почты) из контактов устройства и должен показать его во всплывающем окне при выполнении действия поиска. Как он может быть done..Please помочьКак импортировать почтовый идентификатор из контактов iOS

+2

Что вы пробовали? Все, что было протестировано на платформе «Contacts.framework» (iOS 9) или AddressBook (iOS 8 и ранее) – Raptor

+1

Ваш вопрос очень широк, сделать некоторые исследования, написать код самостоятельно. Если вы хотите нанять разработчика, это неправильное место. –

+0

Вы пробовали Contacts.Framework. http://stackoverflow.com/questions/6865436/get-all-e-mail-addresses-from-contacts-ios. Это может помочь/ –

ответ

1

Вы можете использовать CNContact для извлечения электронной почты address.Try этот код

//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 = @[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 { 
      for (CNContact *contact in cnContacts) { 
       // copy data to my custom Contacts class. 
       Contact *newContact = [[Contact alloc] init]; 
       newContact.firstName = contact.givenName; 
       newContact.lastName = contact.familyName; 
       UIImage *image = [UIImage imageWithData:contact.imageData]; 
       newContact.image = image; 
       for (CNLabeledValue *label in contact.phoneNumbers) { 
        NSString *phone = [label.value stringValue]; 
        if ([phone length] > 0) { 
         [contact.phones addObject:phone]; 
        } 
       } 
      } 
     } 
    }   
}]; 

Использование AddressBook передать этот AddressBook

для поиска это демо-код

ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL); 

_firstname = [[NSMutableArray alloc]init]; 
_email = [[NSMutableArray alloc]init]; 
_lastname = [[NSMutableArray alloc]init]; 
_number = [[NSMutableArray alloc]init]; 
_fullname = [[NSMutableArray alloc]init]; 
_arrContacts = [[NSMutableArray alloc]init]; 
_newnumber = [[NSMutableArray alloc]init]; 
tabledatafirst = [[NSMutableArray alloc]init]; 
tabledatasecond = [[NSMutableArray alloc]init]; 
if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) { 

    ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) { 

     ABAddressBookRef addressBook = ABAddressBookCreate(); 

    }); 

} 

else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) { 
    NSMutableArray *abc = [[NSMutableArray alloc]init]; 

    CFErrorRef *error = NULL; 

    ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error); 

    CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); 

    CFIndex numberOfPeople = ABAddressBookGetPersonCount(addressBook); 

    for(int i = 0; i < numberOfPeople; i++) { 



     ABRecordRef person = CFArrayGetValueAtIndex(allPeople, i); 

     NSString *firstName = (__bridge NSString *)(ABRecordCopyValue(person, kABPersonFirstNameProperty)); 

     NSString *lastName = (__bridge NSString *)(ABRecordCopyValue(person, kABPersonLastNameProperty)); 
     NSString *lastName = (__bridge NSString *)(ABRecordCopyValue(person, kABPersonEmailProperty)); 

     NSString *email = (__bridge NSString *)(ABRecordCopyValue(person, kABPersonEmailProperty)); 


     if (firstName != nil) { 
      [_firstname addObject:firstName]; 

     } 
     else{ 
      [_firstname addObject:@"Not Found"]; 
     } 
     if (lastName != nil) { 
      [_lastname addObject:lastName]; 
     } 
     else{ 
      [_lastname addObject:@"Not Found"]; 
     } 
     //store email in array 
     if (email !=nil) { 
      [_email addObject:email]; 
     } 
     else{ 
      [_email addObject:@"Not Found"]; 
     } 
     //for search contacts use this 
     for (int i=0; i<_email.count; i++) { 
    if([[_email objectAtIndex:i]isEqualToString:_searchtextfield.text]){ 
     NSLog(@"FIRST NAME %@",[_firstname objectAtIndex:i]); 
     _addbuttonoutlet.enabled = YES; 
     _firstnamelbl.text = [_firstname objectAtIndex:i]; 
     _secondnamelbl.text = [_lastname objectAtIndex:i]; 
     NSLog(@"LASTNAME %@",[_lastname objectAtIndex:i]); 
     NSLog(@"FOUND ONCE"); 
     break; 
    } 
    else{ 
     _firstnamelbl.text = @"Sorry Contact NOT found"; 
     _secondnamelbl.text = @""; 
     _addbuttonoutlet.enabled = NO; 
    } 
} 
+0

OP также просит о поиске. – Raptor

+0

дождитесь бит, я скоро отправлю его – viratpuar

Смежные вопросы