获取手机通讯录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/WangErice/article/details/51558367

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

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

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


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

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


定义返回回调函数


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

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


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


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


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


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


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

猜你喜欢

转载自blog.csdn.net/WangErice/article/details/51558367