获取手机通讯录

获取手机联系人和通讯录是比较常见的功能,由于iOS8之后获取的方法有所变化,使得获取时方法的兼容性变的并不那么友好,本文对获取单个联系人和完整通讯录的方法进行了简单的封装,用于选择单个联系人和获取通讯录。

注:本文中的方法只针对iOS7.0之后进行兼容,同时需要注意的是除非有特殊需求,否则不要轻易隐性获取用户的通讯录,更不能泄漏用户的个人信息。

1)为了保持实现功能的独立性,避免不必要的外部依赖,我们为UIWindow创建一个Category来现实获取应用中当前正在显示的控制器,然后用该控制器来present出来ABPeoplePickerNavigationController对象。主要实现如下,通过简单递归来查找当前正在显示的控制器。

获取手机通讯录_第1张图片

2)在工程中引入AddressBook.framework和AddressBookUI.framework两个系统框架和相关头文件,创建继承于NSObject的AddressBookManager的通讯录管理类。

定义以下枚举类型,用以表示返回的状态;

获取手机通讯录_第2张图片

定义返回回调函数


其中code代表返回的状态,response代表操作的返回数据结果。

定义两个类方法,分别用于选个单个联系人和整个通讯录

获取手机通讯录_第3张图片

3)获取单个联系人的方法实现

获取手机通讯录_第4张图片

在iOS7中需要实现的代理方法

获取手机通讯录_第5张图片

在iOS8_OR_LATER中需要实现以下代理方法:

获取手机通讯录_第6张图片

获取完整通讯录的方法实现

获取手机通讯录_第7张图片

想要获取详细的实现细节,可以点击下载。

你可能感兴趣的:(获取手机通讯录)