在iOS里面调用通讯录主要有以下两种方式:
一。使用系统自带的通讯录界面
首先需要导入AddressBookUI包
import AddressBookUI
以下是具体代码实现
let addressController:ABPeoplePickerNavigationController = ABPeoplePickerNavigationController(); // 实现ABPeoplePickerNavigationControllerDelegate协议 // addressController.peoplePickerDelegate = self; self.presentViewController(addressController, animated: true, completion: nil);
实现 ABPeoplePickerNavigationControllerDelegate协议,处理选择后的事件
// MARK: Implements ABPeoplePickerNavigationControllerDelegate func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, didSelectPerson person: ABRecord!) { //person. self.dismissViewControllerAnimated(true, completion: nil) NSLog("%@", person.debugDescription!) // var pid:ABRecordID? = ABRecordGetRecordID(person); var st:Unmanaged<CFString> = ABRecordCopyCompositeName(person); var ss:CFString = st.takeRetainedValue(); NSLog("%@", ss as String); var phones:ABMultiValueRef = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue(); let countOfPhones = ABMultiValueGetCount(phones); for index in 0..<countOfPhones { let phone = ABMultiValueCopyValueAtIndex(phones, index).takeRetainedValue() as NSString; NSLog("phone:%@", phone); } //NSString. }
Screenshot 系统自带的通讯录选择界面
// .........SEPERATED LINE......
//------------------------------------------------------------------------------------------------------------------------
二。手动处理通讯录(API操作)
同样需要先导包AddressBook
import AddressBook
但需要注意的是,通过API获取通讯录需要用户授权,可以通过以下代码判断是否拥有权限:
switch ABAddressBookGetAuthorizationStatus() {
case .Authorized:
println("Already authorized");
case .Denied:
println("You are denied access to address book");
case .NotDetermined:
createAddressBook()
if let theBook: ABAddressBookRef = addressBook{
ABAddressBookRequestAccessWithCompletion(theBook,
{(granted: Bool, error: CFError!) in
if granted{
println("Access is granted")
}else{
println("Access is not granted")
}
})
}
case .Restricted: println("Access is restricted")
default:
println("Unhandled");
}
在获取权限后,就可以获取通讯录的数据了
let address: ABAddressBook = ABAddressBookCreateWithOptions(nil, nil).takeRetainedValue(); let allPeople = ABAddressBookCopyArrayOfAllPeople(address).takeRetainedValue() as NSArray; for person : ABRecordRef in allPeople { let name = ABRecordCopyCompositeName(person).takeRetainedValue() as NSString; println(name); }
相关推荐
【Address Book Putting People in Your App】[PDF] [iPhone/iPad/iOS]
ABUIGroups shows how to check and request access to a user’s address book database. It also demonstrates how to retrieve, add, and remove group records from the address book database using ...
在iOS系统中,用户的联系人数据是通过苹果的Address Book框架进行管理的,该框架提供了访问和操作用户通讯录的功能。对于iOS 10和iOS 9这两个版本,虽然核心功能保持一致,但在某些API和权限管理方面可能存在细微...
文档将重点介绍Cocoa Touch层,包括UIKit框架、MapKit框架、推送通知服务、Message UI框架、Address Book UI框架、GameKit框架、iAd框架等。这部分还会讨论iPhone OS向iOS转变的过程。 6. UIKit框架 UIKit是开发iOS...
详细介绍了iOS 7架构的概况,包括Cocoa Touch层、UIKit框架、MapKit框架、推送通知服务、Message UI框架、Address Book UI框架、GameKit框架以及iAd框架等核心组件。这些组件构成了iOS 7应用程序开发的基础,并允许...
Cocoa Touch层是用户界面的主要构建块,它包含了像Address Book UI、Event Kit UI、Game Kit、iAd、Map Kit、Message UI、UIKit等框架,这些框架支持各种功能,如联系人管理、事件日历、游戏、广告显示、地图服务、...
9. **Address Book**:Address Book框架允许访问和修改用户的联系人信息。源码可能包含如何请求权限、创建和编辑联系人的示例。 10. **Dictionary**:这部分可能涉及词典服务,展示如何在应用中集成苹果内置的词典...
如今,手机成为我们存储联系人信息的主要平台,因此,一个强大的通讯录管理系统需要能够与各种手机操作系统(如iOS、Android)无缝对接,实现数据的同步和备份。这样,即使更换设备或丢失手机,用户也能轻松恢复所有...
12. 检索和操作Address Book中的联系人和群组。这是管理用户在设备上已有的联系人信息的接口,对于需要联系人数据的应用来说,这是不可或缺的一部分。 13. 确定相机的可用性并访问照片库。这一部分介绍了如何使用...
在iOS 9及以后的版本中,Apple引入了一个全新的框架——`Contacts Framework`,用以取代之前的`Address Book Framework`。这个重大更新带来了更强大、更灵活且更符合用户隐私保护的设计。本文将详细讲解`Contacts ...
• Working with the address book • Consuming RESTful web services • Blocks (closures) in Objective-C • Building advanced location-based applications • Developing database applications using the ...
C Runtime features Play audio and video files and access the iPod library Retrieve contacts and groups from the Address Book Determine camera availability and access the Photo Library Create ...
7. 访问Address Book:本书还会介绍如何从Address Book框架中检索联系人和群组信息。 8. 相机功能的使用:涉及如何判断设备是否支持相机,如何访问照片库,以及如何实现应用中的拍照和图像处理功能。 9. 创建多...
Address Book是iOS系统提供的一个强大且灵活的API,用于处理用户的联系人信息。开发者可以利用它来创建、修改和检索联系人数据,提供用户与他们的社交网络进行交互的方式。在“iPhone Demo”中,Address Book可能被...
NSLog(@"Failed to create address book with error: %@", CFBridgingRelease(error)); } else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) { ...
总的来说,访问iOS系统的通讯录涉及核心的Core Contacts框架或较老的Address Book框架,以及遵循正确的权限请求流程。理解这些概念对于开发任何需要与用户通讯录交互的应用至关重要。在实际开发中,确保遵循苹果的...
- **Concept**: The Address Book (Contacts framework) provides access to the user's contact list, enabling developers to retrieve and manipulate contact information. - **Implementation**: Developers ...
这些框架包括音频(Audio)、视频(Video)、音乐库(Music Library)、照片库和图像捕捉(Photo Library and Image Capture)、联系人(Address Book)、日历(Calendar)、邮件和消息(Mail and Messages)、地图...
Apple Address Book Java API 是一个专为开发者设计的开源库,它允许使用 Java 语言与苹果的地址簿系统进行交互。这个API提供了丰富的功能,使得开发者能够轻松地在Java应用程序中集成苹果用户联系人数据的管理和...
第5章 Address Book框架初步 93 第6章 Music Libraries框架 109 第7章 实现HealthKit框架 125 第8章 实现HomeKit框架 139 第9章 JSON的使用和解析 155 第10章 通知机制 165 第11章 基于CloudKit的云存储 183 第12章 ...