免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持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。获取通讯录的过程中,需要注意用户授权和联系人信息的处理。


相关知识:
aab比apk更大
在Android应用程序中,aab和apk都是应用程序包的格式。aab是Android应用程序包(Android App Bundle)的缩写,它是Google在2018年I/O开发者大会上推出的一种新的应用程序打包格式。而apk是Android应用程序包
2023-04-06
apk aab
APK和AAB是Android应用程序包的两种格式。在本文中,我们将详细介绍这两种格式,并解释它们之间的差异以及它们如何影响Android应用程序的构建和发布。APK是Android应用程序包的标准格式。它是一种压缩文件,其中包含应用程序的所有资源和代码。
2023-04-06
封装安卓app
封装安卓app是将已经开发好的安卓应用程序打包成一个独立的安装包,方便用户下载、安装和使用的过程。封装安卓app的目的是为了方便用户,提高用户使用体验,同时也可以保护应用程序的代码和数据,防止被非法复制和篡改。封装安卓app的过程主要分为以下几个步骤:1.
2023-04-06
苹果免签名打包软件
苹果免签名打包软件是一种可以让开发者将自己的应用程序打包成IPA文件并在非越狱的iOS设备上安装运行的工具。这种工具可以绕过苹果的签名限制,使得开发者可以在不需要苹果开发者账号的情况下将自己的应用程序分发给其他用户使用。苹果免签名打包软件的原理是通过利用苹
2023-04-06
rpm打包
RPM(Red Hat Package Manager)是一种常见的软件包管理系统,可用于在Red Hat和Fedora等Linux操作系统中安装、升级和删除软件包。RPM打包是将软件程序及其相关文件打包成一个可安装的RPM软件包的过程。本文将详细介绍RP
2023-04-06
获取安卓的签名
在Android开发中,签名是非常重要的一个概念。签名可以保证应用程序的完整性、真实性和安全性。当用户下载应用程序时,系统会校验应用程序的签名,以确保该应用程序是由合法的开发者发布的。如果应用程序的签名不合法,那么用户将无法安装该应用程序。那么,如何获取A
2023-04-06
制作exe程序
制作EXE程序是一项非常重要的技能,尤其是对于计算机科学专业的学生和程序员来说。EXE程序是一种可执行文件,可以在各种计算机系统上运行。在本文中,我们将介绍EXE程序的制作原理和详细步骤。一、EXE程序的原理EXE程序是一种二进制文件,它包含了可执行代码和
2023-04-06
H5封装 app
H5封装App是一种将网页应用封装成App的技术,它可以让用户通过下载一个App来访问网页应用,同时也可以在App中集成一些原生的功能。这种技术在移动互联网时代被广泛应用,因为它可以降低开发成本,提高开发效率,同时也可以让用户更加方便地访问网页应用。H5封
2023-04-06
安卓apk打包
安卓apk打包是将安卓应用程序打包成一个安装包的过程,用户可以通过这个安装包在安卓设备上安装和使用应用程序。打包过程包括将应用程序的资源文件、源代码、库文件等打包成一个apk文件,以及对apk文件进行签名等操作。下面是安卓apk打包的详细介绍:1. 安装J
2023-04-06
手机网站转ios软件
随着智能手机的普及,移动互联网成为了现代社会生活中不可或缺的一部分。为了迎合用户需求,许多企业和个人都开发了手机网站,以提供更好的用户体验。然而,有些用户更喜欢使用原生应用程序,因为它们通常比网站更流畅、更稳定,并提供更多的功能。因此,将手机网站转换为iO
2023-04-06
ios assets生成
iOS开发中,我们经常需要使用各种尺寸的图片,例如App图标、启动图、按钮图标等等。为了保证这些图片在不同设备上显示的效果一致,我们需要为每个图片生成多个不同尺寸的版本。这个过程叫做iOS Assets生成。iOS Assets生成的原理是根据不同设备的屏
2023-04-06
android kotlin
Kotlin是一种现代化的、静态类型的编程语言,由JetBrains开发,可以运行在Java虚拟机上,也可以编译成JavaScript源代码。Kotlin的设计目标是提供一种更简洁、更安全、更实用的编程语言,它可以用于开发各种类型的应用程序,包括Andro
2023-04-06