iphoneabaddressbook

How to add new contact to iOS Contacts (Address Book)?


I want to save contact directly to an iOS device's Address Book programmatically.

How can I do it?


Solution

  • Here is a small example :

    CFErrorRef error = NULL; 
    NSLog(@"%@", [self description]);
    ABAddressBookRef iPhoneAddressBook = ABAddressBookCreate();
    
    ABRecordRef newPerson = ABPersonCreate();
    
    ABRecordSetValue(newPerson, kABPersonFirstNameProperty, people.firstname, &error);
    ABRecordSetValue(newPerson, kABPersonLastNameProperty, people.lastname, &error);
    
        ABMutableMultiValueRef multiPhone =     ABMultiValueCreateMutable(kABMultiStringPropertyType);
    ABMultiValueAddValueAndLabel(multiPhone, people.phone, kABPersonPhoneMainLabel, NULL);
    ABMultiValueAddValueAndLabel(multiPhone, people.other, kABOtherLabel, NULL);            
    ABRecordSetValue(newPerson, kABPersonPhoneProperty, multiPhone,nil);
    CFRelease(multiPhone);
        // ... 
        // Set other properties
        // ...
        ABAddressBookAddRecord(iPhoneAddressBook, newPerson, &error);
    
    ABAddressBookSave(iPhoneAddressBook, &error);
        CFRelease(newPerson);
        CFRelease(iPhoneAddressBook);
    if (error != NULL) 
    {
           CFStringRef errorDesc = CFErrorCopyDescription(error);
       NSLog(@"Contact not saved: %@", errorDesc);
           CFRelease(errorDesc);        
    }