免费试用

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


相关知识:
android自动化打包
Android自动化打包是指通过一些自动化工具或脚本,将Android应用程序进行编译、打包、签名等操作,从而实现自动化的打包过程。这样可以大大提高打包的效率,减少人工操作的出错率,为Android开发者提供更加便捷的开发环境。Android自动化打包的原
2023-04-06
android写app
Android是一个由Google开发的基于Linux的开源移动操作系统,是目前全球最流行的移动操作系统之一。它的开源性和强大的应用程序生态系统使得Android成为了移动应用程序开发的首选平台之一。在本文中,我们将介绍如何使用Android Studio
2023-04-06
exe封装软件制作工具
EXE封装软件是一种将多个文件(如程序、库文件、配置文件等)打包成一个可执行文件的工具。这种工具可以方便地将程序和依赖文件打包在一起,简化程序的部署和发布。在本文中,我们将介绍EXE封装软件的原理和如何使用它来制作可执行文件。## EXE封装软件的原理EX
2023-04-06
应用已删除或下架
应用已删除或下架是指应用程序从应用商店或其他下载渠道中移除的情况。这种情况可能是由于多种原因导致的,包括应用程序违反了应用商店的政策,应用程序存在漏洞或安全隐患,开发者主动删除了应用程序,或者应用程序已经过时不再受到支持等等。下面是应用已删除或下架的一些可
2023-04-06
开发手机APP工具
开发手机APP工具是现代科技领域的一个热门话题,因为随着智能手机的普及,越来越多的人开始使用APP来方便自己的日常生活。如果你也想开发一个APP工具,那么本文将为你介绍一些基本原理和开发流程。1.确定目标和功能在开发APP工具之前,首先要确定你的目标用户和
2023-04-06
手机App
手机App(Application)是指在移动设备上安装的应用程序,它们可以通过各种应用商店下载,并在移动设备上运行。随着移动设备的普及,手机App已经成为人们日常生活中不可或缺的一部分。本文将从原理和详细介绍两个方面来介绍手机App。一、原理手机App的
2023-04-06
iap 内购接入流程
内购(In-App Purchase,简称 IAP)是一种应用程序内购买商品的机制。它在 App Store 中广泛使用,用户可以通过内购购买应用程序中的虚拟物品、订阅服务、解锁新的功能等等。内购对于应用程序开发者来说非常重要,因为它可以为他们提供额外的收
2023-04-06
网页转应用app生成器
网页转应用App生成器,是一种将网页转化为手机应用程序的工具。它可以将一个网页直接转化为一个手机应用,使得用户可以直接在手机上使用这个网页,而不需要再打开浏览器。这种工具可以让用户更方便地使用网页,同时也可以让网站拥有更多的用户。网页转应用App生成器的原
2023-04-06
py打包apk器
随着移动互联网的普及,开发一个Android应用已经成为了很多人的兴趣和爱好。而对于开发者来说,将自己的应用打包成APK(Android Package Kit)文件是非常重要的一个步骤。本文将介绍如何使用Python来打包APK,包括打包工具的原理和详细
2023-04-06
网址封装ios
网址封装是指将一个网址或者网页封装成一个应用程序的形式,用户可以通过下载应用程序来访问该网页或者网址。这种方式在移动互联网时代越来越普及。对于iOS平台而言,网址封装是一种非常方便的方式,可以让用户快速地访问他们需要的网址,同时也可以提高网站的访问量。本文
2023-04-06
安卓app封装软件
安卓APP封装软件是一种将已有的网站或应用程序转化为安卓APP的工具。封装软件的原理是通过将网站或应用程序打包成APK格式的安装包,然后通过安装包的方式在安卓设备上运行。封装软件的优点是可以将网站或应用程序转化为安卓APP,方便用户在手机上使用,同时也能够
2023-04-06
安卓框架
安卓框架是一种软件架构,用于构建安卓操作系统。它是一个层次结构,包括多个层,每个层都有其独特的功能。安卓框架的设计旨在提高应用程序的可靠性、安全性、性能和可扩展性。安卓框架的四个层次结构是:1. 应用层:应用层是用户与设备交互的层,包括应用程序、用户界面、
2023-04-06