Join the social network of Tech Nerds, increase skill rank, get work, manage projects...
 
  • Import Phonebook contacts in Objective C

    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 1.14k
    Comment on it

    Get the complete list of phonebook contacts inside the app.

    We need to add two frameworks before proceed. Goo to Build Phase and Add these two:-

    #import < AddressBook/AddressBook.h>
    #import < AddressBookUI/AddressBookUI.h>
    

    First step to get access permission to Contacts List or Phone book.

    -(void)getList{
    
        ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
    
        __block BOOL accessGranted = NO;
    
        if (ABAddressBookRequestAccessWithCompletion != NULL) { // We are on iOS 6
            dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
    
            ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
                accessGranted = granted;
                dispatch_semaphore_signal(semaphore);
            });
    
            dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
            //dispatch_release(semaphore);
        }
    
        else { // We are on iOS 5 or Older
            accessGranted = YES;
            [self getContactsWithAddressBook:addressBook];
        }
    
        if (accessGranted) {
            [self getContactsWithAddressBook:addressBook];
        }
    }
    

    After getting access to phonebook we just need to create address book objects and set loop to retrieve name, phone number and emails down here:-

    // Get the contacts.
    - (void)getContactsWithAddressBook:(ABAddressBookRef )addressBook {
    
        contactList = [[NSMutableArray alloc] init];
        CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
        CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);
    
        for (int i=0;i < nPeople;i++) {
            NSMutableDictionary *dOfPerson=[NSMutableDictionary dictionary];
    
            ABRecordRef ref = CFArrayGetValueAtIndex(allPeople,i);
    
            //For username and surname
            ABMultiValueRef phones =(__bridge ABMultiValueRef)((__bridge NSString*)ABRecordCopyValue(ref, kABPersonPhoneProperty));
    
            CFStringRef firstName, lastName;
            firstName = ABRecordCopyValue(ref, kABPersonFirstNameProperty);
            lastName  = ABRecordCopyValue(ref, kABPersonLastNameProperty);
            [dOfPerson setObject:[NSString stringWithFormat:@"%@ %@", firstName, lastName] forKey:@"name"];
    
            //For Email ids
            ABMutableMultiValueRef eMail  = ABRecordCopyValue(ref, kABPersonEmailProperty);
            if(ABMultiValueGetCount(eMail) > 0) {
                [dOfPerson setObject:(__bridge NSString *)ABMultiValueCopyValueAtIndex(eMail, 0) forKey:@"email"];
    
            }
    
            //For Phone number
            NSString* mobileLabel;
    
            for(CFIndex i = 0; i < ABMultiValueGetCount(phones); i++) {
                mobileLabel = (__bridge NSString*)ABMultiValueCopyLabelAtIndex(phones, i);
                if([mobileLabel isEqualToString:(NSString *)kABPersonPhoneMobileLabel])
                {
                    [dOfPerson setObject:(__bridge NSString*)ABMultiValueCopyValueAtIndex(phones, i) forKey:@"Phone"];
                }
                else if ([mobileLabel isEqualToString:(NSString*)kABPersonPhoneIPhoneLabel])
                {
                    [dOfPerson setObject:(__bridge NSString*)ABMultiValueCopyValueAtIndex(phones, i) forKey:@"Phone"];
                    break ;
                }
    
            }
            [contactList addObject:dOfPerson];
    
        }
        NSLog(@"Contacts = %@",contactList);
    }
    
    

    Here I am printing (NSLog) the contact list array.
    Happy Coding :)

 0 Comment(s)

Sign In
                           OR                           
                           OR                           
Register

Sign up using

                           OR                           
Forgot Password
Fill out the form below and instructions to reset your password will be emailed to you:
Reset Password
Fill out the form below and reset your password: