商务系统 - 操作系统光盘下载网站!

当前位置: 首页  >  教程资讯 ios 调用系统通讯录, 获取通讯录权限

ios 调用系统通讯录, 获取通讯录权限

时间:2024-11-13 来源:网络 人气:

iOS 调用系统通讯录详解

在iOS开发过程中,调用系统通讯录是一个常见的需求。通过调用通讯录,我们可以获取用户的好友信息,实现联系人搜索、添加等功能。本文将详细介绍如何在iOS中调用系统通讯录,包括获取权限、调用通讯录界面以及获取联系人信息等。

获取通讯录权限

在iOS 10及以后版本中,苹果对通讯录权限进行了严格的限制。因此,在调用通讯录之前,我们需要先获取用户的授权。

1. 检查权限

在调用通讯录之前,我们需要检查用户是否已经授权。以下是一个检查通讯录权限的示例代码:

```objective-c

- (BOOL)checkAddressBookAuthorization {

if (@available(iOS 10.0, )) {

return [self checkAddressBookAuthorizationForiOS10];

} else {

return [self checkAddressBookAuthorizationForiOS9];

}

- (BOOL)checkAddressBookAuthorizationForiOS10 {

return [self checkAuthorizationWithScope:ABAuthorizationReadContacts];

- (BOOL)checkAddressBookAuthorizationForiOS9 {

return [self checkAuthorizationWithScope:ABAuthorizationReadAddressBook];

- (BOOL)checkAuthorizationWithScope:(ABAuthorization)scope {

ABAuthorizationStatus status = [[ABAddressBook authorizationStatusForEntityType:ABPeople] error:nil];

return status == ABAuthorizationStatusAuthorized;

2. 请求权限

如果用户尚未授权,我们需要请求权限。以下是一个请求通讯录权限的示例代码:

```objective-c

- (void)requestAddressBookAuthorization {

if (@available(iOS 10.0, )) {

[self requestAddressBookAuthorizationForiOS10];

} else {

[self requestAddressBookAuthorizationForiOS9];

}

- (void)requestAddressBookAuthorizationForiOS10 {

[ABAddressBook requestAccessForEntityType:ABPeople completionBlock:^(BOOL granted, NSError _Nullable error) {

if (granted) {

// 用户授权成功,调用通讯录

} else {

// 用户拒绝授权,提示用户到设置中打开权限

}

}];

- (void)requestAddressBookAuthorizationForiOS9 {

[ABAddressBook requestAccessWithCompletionBlock:^(BOOL granted, NSError _Nullable error) {

if (granted) {

// 用户授权成功,调用通讯录

} else {

// 用户拒绝授权,提示用户到设置中打开权限

}

}];

调用通讯录界面

在获取通讯录权限后,我们可以调用系统通讯录界面,让用户选择联系人。

1. 创建通讯录控制器

以下是一个创建通讯录控制器的示例代码:

```objective-c

- (ABPeoplePickerNavigationController )createPeoplePickerController {

ABPeoplePickerNavigationController pickerController = [[ABPeoplePickerNavigationController alloc] init];

pickerController.peoplePickerDelegate = self;

return pickerController;

2. 显示通讯录界面

以下是一个显示通讯录界面的示例代码:

```objective-c

- (void)showPeoplePickerController {

ABPeoplePickerNavigationController pickerController = [self createPeoplePickerController];

[self presentViewController:pickerController animated:YES completion:nil];

获取联系人信息

在用户选择联系人后,我们可以获取到该联系人的信息。

1. 获取联系人对象

以下是一个获取联系人对象的示例代码:

```objective-c

- (CNContact )getContactObject {

CNContact contact = [pickerController selectedContact];

return contact;

2. 获取联系人信息

以下是一个获取联系人信息的示例代码:

```objective-c

- (void)fetchContactInfo {

CNContact contact = [self getContactObject];

if (contact) {

// 获取联系人的姓名

NSString name = contact.givenName;

CNLabeledValue phone = contact.phoneNumbers.firstObject;

NSString phoneNumber = phone.value.stringValue;

// ... 获取其他联系人信息

}

本文详细介绍了如何在iOS中调用系统通讯录。通过获取通讯录权限、调用通讯录界面以及获取联系人信息,我们可以实现各种与通讯录相关的功能。在实际开发过程中,请根据具体需求进行相应的调整。


作者 小编

教程资讯

教程资讯排行

系统教程

主题下载