您好, , 海量一手媒体资源,专业、正规、高效,为企业提供一站式营销推广服务!
温馨提示
运营小帮手
一站式互联网营销服务平台
  全国免费咨询热线
0755-23071973
运营小帮手
软文发稿
PC端 选择媒体
更方便、更快捷!
查看媒体价格
软文发布、软文代写、百科制作、问答营销、微信营销、微信营销
查看媒体价格
当前位置: 运营小帮手首页 > 新闻中心 > 文章正文

iOS添加、删除通讯录

iOS中操作通讯录是需要请求用户的授权的,如果没有得到用户的授权,就没有下文的。对于一些app很恶心,请求得到用户的授权后,给用户的通讯录中插入广告信息,比如常见的就是日历。

回到我们的话题,今天做到这个么小需求,需要添加N条手机号到通讯录,同样也要能清空通讯录。在完成后, 将这两段代码片段记录下来,供大家参考!

添加到通讯录

下面是添加到通讯录的一段代码片段,这里只是手机号作为firstName,功能很单一,具体要添加多个值需要自己去添加!

CFErrorReferror=NULL;

//创建一个通讯录操作对象
ABAddressBookRefaddressBook=ABAddressBookCreateWithOptions(NULL,&error);

ABAddressBookRequestAccessWithCompletion(addressBook,^(boolgranted,CFErrorReferror){
if(granted&&!error){
for(NSUIntegeri=0;i<self.textField.text.integerValue&&i<count;++i){
@autoreleasepool{
//创建一条新的联系人纪录
ABRecordRefnewRecord=ABPersonCreate();

//为新联系人记录添加属性值
ABRecordSetValue(newRecord,
kABPersonFirstNameProperty,
(__bridgeCFTypeRef)self.phoneArray[i],
&error);

//创建一个多值属性
ABMutableMultiValueRefmulti=ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(multi,
(__bridgeCFTypeRef)self.phoneArray[i],
kABPersonPhoneMobileLabel,NULL);

//将多值属性添加到记录
ABRecordSetValue(newRecord,kABPersonPhoneProperty,multi,&error);
//添加记录到通讯录操作对象
ABAddressBookAddRecord(addressBook,newRecord,&error);

CFRelease(newRecord);
CFRelease(multi);
}
}

//保存通讯录操作对象
ABAddressBookSave(addressBook,&error);
CFRelease(addressBook);
}

清空通讯录

下面是一段清空通讯录的代码片段,一定要小心哦,清空前一定要慎重!

CFErrorReferror=NULL;

//创建一个通讯录操作对象
ABAddressBookRefaddressBook=ABAddressBookCreateWithOptions(NULL,&error);

ABAddressBookRequestAccessWithCompletion(addressBook,^(boolgranted,CFErrorReferror){
if(granted&&!error){
CFArrayRefpersonArray=ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndexpersonCount=ABAddressBookGetPersonCount(addressBook);

if(personCount<=0){
dispatch_async(dispatch_get_main_queue(),^{
[SVProgressHUDshowSuccessWithStatus:@"清空通讯录成功"];
});
return;
}

for(inti=0;i<personCount;i++){
ABRecordRefref=CFArrayGetValueAtIndex(personArray,i);
//删除联系人
ABAddressBookRemoveRecord(addressBook,ref,nil);
}

//保存通讯录操作对象
ABAddressBookSave(addressBook,&error);
CFRelease(addressBook);

dispatch_async(dispatch_get_main_queue(),^{
if(!error){
[SVProgressHUDshowSuccessWithStatus:@"清空通讯录成功"];
}else{
[SVProgressHUDshowErrorWithStatus:@"清空通讯录失败"];
}
});
}
});

小结

iOS9.0以后ABAddressBook这个framework被废弃了,推荐的是CNContact这个类来处理。不过我们都需要兼容9.0以下版本,所以现在不用管它。

关键词:

猜您可能需要的服务: