您的位置:首页 > 移动开发 > IOS开发

IOS 通讯录获取(五)

2016-03-14 15:34 495 查看
参考:http://m.open-open.com/m/code/view/1432302834146

#pragma mark - 获取访问通讯录授权
-(void)address
{
//这个变量用于记录授权是否成功,即用户是否允许我们访问通讯录
int __block tip=0;
//声明一个通讯簿的引用
addressBook =nil;
//因为在IOS6.0之后和之前的权限申请方式有所差别,这里做个判断
if ([[UIDevice currentDevice].systemVersion floatValue]>=6.0)
{
//创建通讯簿的引用
addressBook=ABAddressBookCreateWithOptions(NULL, NULL);
dispatch_semaphore_t sema = dispatch_semaphore_create(0);

//申请访问权限
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool greanted, CFErrorRef error)        {
//greanted为YES是表示用户允许,否则为不允许
if (!greanted)
{
tip=1;
}
//授权访问
else
{
NSMutableArray *ary = [self readAddress];

}
//发送一次信号
dispatch_semaphore_signal(sema);
});

}
else
{
//IOS6之前
addressBook =ABAddressBookCreate();
if (addressBook)
{
[self readAddress];
}
}

}

#pragma mark - 联系人姓名、电话
-(NSMutableArray*)readAddress
{

//获取所有联系人的数组
CFArrayRef allLinkPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
//获取联系人总数
CFIndex number = ABAddressBookGetPersonCount(addressBook);

NSMutableArray *addressAry = [NSMutableArray array];
//进行遍历
for (NSInteger i=0; i<number; i++) {

NSMutableDictionary *phoneDic = [NSMutableDictionary dictionary];

//获取联系人对象的引用
ABRecordRef  people = CFArrayGetValueAtIndex(allLinkPeople, i);

//获取当前联系人名字
NSString*firstName=(__bridge NSString *)(ABRecordCopyValue(people, kABPersonFirstNameProperty));

//获取当前联系人名字
NSString*lastName=(__bridge NSString *)(ABRecordCopyValue(people, kABPersonLastNameProperty));

NSString *name = [NSString stringWithFormat:@"%@%@",firstName.length>0?firstName:@"",lastName.length>0?lastName:@""];

//获取当前联系人的电话 数组
NSMutableArray * phoneArr = [[NSMutableArray alloc]init];
ABMultiValueRef phones= ABRecordCopyValue(people, kABPersonPhoneProperty);
for (NSInteger j=0; j<ABMultiValueGetCount(phones); j++) {
[phoneArr addObject:(__bridge NSString *)(ABMultiValueCopyValueAtIndex(phones, j))];

}
if (!IS_NULL(name))
{
[phoneDic setObject:name forKey:@"phoneName"];
[phoneDic setObject:phoneArr forKey:@"phoneNum"];

[addressAry addObject:phoneDic];
NSLog(@"联系人的姓名 =%@",name);
NSLog(@"联系人的电话phoneArr = %@",phoneArr);

}

}

return addressAry;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: