如何向iOS联系人(地址簿)添加新联系人?

Cha*_*har 12 iphone abaddressbook

我想以编程方式直接将联系人保存到iOS设备的地址簿中.

我该怎么做?

j_f*_*yre 28

这是一个小例子:

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);        
}
Run Code Online (Sandbox Code Playgroud)

  • @RanjitChandel您是否在创建联系人之前询问了许可?这是一个请求权限的示例:https://gist.github.com/jfreyre/605a5e500eaf8a1b6610注意:我没有使用`ABAddressBookRef iPhoneAddressBook = ABAddressBookCreate();`自我第一次回答以来已经删除了``ABAddressBookRef iPhoneAddressBook = ABAddressBookCreateWithOptions (NULL,NULL);`这是新方法 (2认同)