#pragma mark - 选取手机联系人
-(void)selectPeople
{
//这个变量用于记录授权是否成功,即用户是否允许我们访问通讯录
int __block tip = 0;
//声明一个通讯簿的引用
ABAddressBookRef addBook =nil;
//创建通讯簿的引用
addBook=ABAddressBookCreateWithOptions(NULL, NULL);
//创建一个出事信号量为0的信号
dispatch_semaphore_t sema=dispatch_semaphore_create(0);
//申请访问权限
ABAddressBookRequestAccessWithCompletion(addBook, ^(bool greanted, CFErrorRef error) {
//greanted为YES是表示用户允许,否则为不允许
if (!greanted) {
tip=1;
}
//发送一次信号
dispatch_semaphore_signal(sema);
});
//等待信号触发
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
if (tip) {
//做一个友好的提示
UIAlertView * alart = [[UIAlertView alloc]initWithTitle:@"" message:@"此应用程序没有权限访问您的联系人。您可以在'设置'->'隐私'->'通讯录'->'健一网'中启用访问权限" delegate:self cancelButtonTitle:@"知道了" otherButtonTitles:nil, nil];
[alart show];
}else{
_peoplePicker = [[ABPeoplePickerNavigationController alloc] init];
_peoplePicker.peoplePickerDelegate = self;
NSArray *displayItems = [NSArray arrayWithObjects:[NSNumber numberWithInt:kABPersonPhoneProperty],nil];
_peoplePicker.displayedProperties=displayItems;
if(__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0){
_peoplePicker.predicateForSelectionOfPerson = [NSPredicate predicateWithValue:false];
}
[self presentViewController:_peoplePicker animated:YES completion:nil];
}
}
#pragma mark -- ABPeoplePickerNavigationControllerDelegate
//ios8执行
- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker
didSelectPerson:(ABRecordRef)person
property:(ABPropertyID)property
identifier:(ABMultiValueIdentifier)identifier
{
if(property != kABPersonPhoneProperty) {
return ;
}
ABMultiValueRef valuesRef = ABRecordCopyValue(person, kABPersonPhoneProperty);
CFIndex index = ABMultiValueGetIndexForIdentifier(valuesRef,identifier);
CFStringRef value = ABMultiValueCopyValueAtIndex(valuesRef,index);
NSString * picked_value = (__bridge NSString*)value;
}
//ios7执行
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person
property:(ABPropertyID)property
identifier:(ABMultiValueIdentifier)identifier
{
if(property != kABPersonPhoneProperty) {
return NO;
}
ABMultiValueRef valuesRef = ABRecordCopyValue(person, kABPersonPhoneProperty);
CFIndex index = ABMultiValueGetIndexForIdentifier(valuesRef,identifier);
CFStringRef value = ABMultiValueCopyValueAtIndex(valuesRef,index);
NSString * picked_value = (__bridge NSString*)value;
if(picked_value)//需要修改的地方
{
return YES;
}
else
{
return NO;
}
}
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{
[self dismissViewControllerAnimated:YES completion:nil];
}
调用系统通讯录 获得手机号
最新推荐文章于 2019-01-25 13:49:00 发布