免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持APP、电脑端、小程序、IOS免签等等

ios开发开获取通讯录

在iOS开发中,获取通讯录是一个常见的需求。本文将介绍在iOS平台上如何获取通讯录。

iOS平台上获取通讯录的方法主要有两种:ABAddressBook和CNContactStore。其中,ABAddressBook是iOS 9之前的API,CNContactStore是iOS 9之后的API。

ABAddressBook

ABAddressBook是Address Book框架中的一个类,它提供了访问通讯录的功能。使用ABAddressBook获取通讯录的步骤如下:

1. 导入Address Book框架

在代码中引入Address Book框架:

```

#import

```

2. 请求访问权限

在iOS 6及以上版本中,需要用户授权才能访问通讯录。可以调用ABAddressBookRequestAccessWithCompletion函数请求访问权限:

```

ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);

ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {

if (granted) {

// 授权成功,获取通讯录

[self getContactsFromAddressBook:addressBook];

} else {

// 授权失败

}

});

```

3. 获取通讯录

授权成功后,可以使用ABAddressBookCopyArrayOfAllPeople函数获取通讯录中的所有联系人:

```

- (void)getContactsFromAddressBook:(ABAddressBookRef)addressBook {

CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);

CFIndex count = CFArrayGetCount(allPeople);

for (int i = 0; i < count; i++) {

ABRecordRef person = CFArrayGetValueAtIndex(allPeople, i);

// 处理联系人信息

}

CFRelease(allPeople);

}

```

在获取每个联系人的信息之前,需要判断该联系人是否有电话号码:

```

if (ABRecordGetRecordType(person) == kABPersonType) {

ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);

CFIndex phoneCount = ABMultiValueGetCount(phones);

if (phoneCount > 0) {

// 处理联系人信息

}

CFRelease(phones);

}

```

CNContactStore

CNContactStore是Contacts框架中的一个类,它提供了访问通讯录的功能。使用CNContactStore获取通讯录的步骤如下:

1. 导入Contacts框架

在代码中引入Contacts框架:

```

#import

```

2. 请求访问权限

在iOS 9及以上版本中,需要用户授权才能访问通讯录。可以调用CNContactStore的requestAccessForEntityType:completionHandler:方法请求访问权限:

```

CNContactStore *contactStore = [[CNContactStore alloc] init];

[contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {

if (granted) {

// 授权成功,获取通讯录

[self getContactsFromContactStore:contactStore];

} else {

// 授权失败

}

}];

```

3. 获取通讯录

授权成功后,可以使用CNContactFetchRequest类获取通讯录中的所有联系人:

```

- (void)getContactsFromContactStore:(CNContactStore *)contactStore {

NSArray *keys = @[CNContactGivenNameKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey];

CNContactFetchRequest *request = [[CNContactFetchRequest alloc] initWithKeysToFetch:keys];

[contactStore enumerateContactsWithFetchRequest:request error:nil usingBlock:^(CNContact * _Nonnull contact, BOOL * _Nonnull stop) {

// 处理联系人信息

}];

}

```

在获取每个联系人的信息之前,需要判断该联系人是否有电话号码:

```

if (contact.phoneNumbers.count > 0) {

// 处理联系人信息

}

```

总结

ABAddressBook和CNContactStore都可以用于获取iOS平台上的通讯录。在iOS 9及以上版本中,推荐使用CNContactStore。获取通讯录的过程中,需要注意用户授权和联系人信息的处理。


相关知识:
apk开发教程
APK是Android应用程序的安装包,它包含了应用程序的所有组件,包括代码、资源、权限、配置文件等等。APK的制作过程包括编写代码、编译代码、打包资源、签名等等步骤,下面将详细介绍APK的制作过程。1. 编写代码APK的制作首先需要编写代码,代码可以使用
2023-04-06
x5内核
X5内核是腾讯公司自主研发的一款浏览器内核,是目前国内最主流的移动浏览器内核之一。它基于Google Chromium开源项目,融合了腾讯自主研发的技术,并在此基础上进行了优化和改进。本文将详细介绍X5内核的原理和特点。一、X5内核的原理X5内核是基于Go
2023-04-06
html封装APP
HTML封装APP是一种将HTML5页面封装为移动应用程序的技术。它可以让开发者在不需要编写原生代码的情况下,快速地将网页变成一个移动应用程序,从而提高开发效率,降低开发成本。本文将对HTML封装APP的原理和详细介绍进行阐述。一、原理HTML封装APP的
2023-04-06
webclip打包网页链接打包app
Webclip是一种将网页链接打包成应用的技术,它可以让用户在手机上直接打开网页链接,而无需通过浏览器进行访问。这种技术最初由苹果公司在iOS操作系统中引入,目的是让用户可以更方便地访问他们最喜欢的网站。Webclip可以让网站看起来像是一个本地应用程序,
2023-04-06
windows应用开发工具
Windows应用开发工具是一种用于开发Windows操作系统上的应用程序的软件工具。这些工具包括编程语言、集成开发环境(IDE)、编译器、调试器和其他开发工具。本文将介绍Windows应用开发工具的原理和详细介绍。一、Windows应用开发工具的原理Wi
2023-04-06
网页转ipa
网页转IPA(International Phonetic Alphabet,国际音标)是一种将文字转换成音标的技术。它可以将任何语言的文字转换成音标,使得人们可以更加准确地发音。在语言学学习、语音合成、语音识别等领域都有广泛的应用。网页转IPA的原理是将
2023-04-06
apk文件组成
APK文件是Android应用程序的安装包,它是由一系列文件和目录组成的压缩包,其中包含了应用程序的所有组件、资源和配置信息。APK文件的组成大致可分为以下几个部分:1. META-INF目录该目录下包含了应用程序的签名信息,以及一个MANIFEST.MF
2023-04-06
怎么自己做一个app软件
做一个app软件需要具备一定的编程知识和技能,同时需要了解app的开发流程和工具。下面将介绍一些关键步骤和工具,帮助你了解如何自己做一个app软件。1.确定需求和目标在开始开发之前,需要明确自己的目标和需求。你需要考虑你的app是为了解决什么问题,或者提供
2023-04-06
apk编辑pc
APK编辑是一种修改Android应用程序的方法,它允许用户编辑APK文件,以实现自定义功能。在本文中,我们将介绍APK编辑的原理和详细步骤。APK文件是Android应用程序的安装包,它包含了应用程序的所有文件和资源。APK编辑可以让用户修改这些文件和资
2023-04-06
ios 悬浮框开发
iOS悬浮框,也叫做悬浮球或者悬浮按钮,是指一个能够在iOS设备屏幕上浮动的小图标,用户可以通过点击它来实现某些操作。比如,可以用它来快速启动某个应用,或者在网页上添加书签等等。下面,我们将介绍iOS悬浮框的实现原理和详细步骤。一、实现原理iOS悬浮框的实
2023-04-06
原生ios开发
iOS开发是指基于苹果公司开发的iOS操作系统进行应用程序开发。iOS操作系统是苹果公司开发的移动操作系统,主要应用于iPhone、iPad和iPod Touch等移动设备。原生iOS开发是指在苹果公司提供的开发环境下,使用Objective-C或Swif
2023-04-06
十、网站转APP配置原生标题栏
一门APP配置原生标题栏【配置APP】中心点击原生标题栏!【文字】或【图标】弹出配置页面介绍:1.状态勾选框!是否启动原生标题栏!&mdash;&mdash;默认勾选状态!去掉勾选,则取消原生标题栏!2.预览!可快速预览下面配置情况!3.原生标题栏的标题,
2017-04-24