2016-08-16 15_36_02.gif
導(dǎo)入AddressBook.framework
#import<AddressBook/AddressBook.h>
// 添加聯(lián)系人(聯(lián)系人名稱谱秽、號(hào)碼洽蛀、號(hào)碼備注標(biāo)簽)
+ (BOOL)addContactName:(NSString*)name phoneNum:(NSString*)num withLabel:(NSString*)label
{
// 創(chuàng)建一條空的聯(lián)系人
ABRecordRef record = ABPersonCreate();
CFErrorRef error;
// 設(shè)置聯(lián)系人的名字
ABRecordSetValue(record, kABPersonFirstNameProperty, (__bridge CFTypeRef)name, &error);
// 添加聯(lián)系人電話號(hào)碼以及該號(hào)碼對(duì)應(yīng)的標(biāo)簽名
ABMutableMultiValueRef multi = ABMultiValueCreateMutable(kABPersonPhoneProperty);
ABMultiValueAddValueAndLabel(multi, (__bridge CFTypeRef)num, (__bridge CFTypeRef)label, NULL);
ABRecordSetValue(record, kABPersonPhoneProperty, multi, &error);
ABAddressBookRef addressBook = nil;
// 如果為iOS6以上系統(tǒng)摹迷,需要等待用戶確認(rèn)是否允許訪問(wèn)通訊錄。
if ([[UIDevice currentDevice].systemVersion floatValue] >= 6.0){
addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
//等待同意后向下執(zhí)行
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error){
dispatch_semaphore_signal(sema);
});
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
}else{
addressBook = ABAddressBookCreateWithOptions(NULL, (CFErrorRef *)&error);
}
// 將新建聯(lián)系人記錄添加如通訊錄中
BOOL success = ABAddressBookAddRecord(addressBook, record, &error);
if (!success) {
return NO;
}else{
// 如果添加記錄成功郊供,保存更新到通訊錄數(shù)據(jù)庫(kù)中
success = ABAddressBookSave(addressBook, &error);
return success ? YES : NO;
}
}