iOS开发中 , 获取用户通讯录一般分为两种 , 一种为有UI , 即为类似弹出手机通讯一样的列表 . 二是无UI , 即需要获取通讯录中的信息 , 然后自己搭建UI界面用于展示 , 尤其在社交类app较为常见 . 而通常情况 , 我们需要获取的是通讯录中联系人的电话和姓名.
访问权限
iOS 10 后苹果加强用户隐私保护 , 在info.plist文件中配置 Privacy - Contacts Usage Description 即可 .
代码中:
1 . 在App delegate中导入 #import <AddressBook/AddressBook.h>
头文件
2 . 向用户请求授权
// kABAuthorizationStatusNotDetermined = 0, 未决定
// kABAuthorizationStatusRestricted, 特殊原因禁止访问用户通讯录
// kABAuthorizationStatusDenied, 用户拒绝访问
// kABAuthorizationStatusAuthorized 已经授权访问
// 倒数第二种除非用户在设置里主动打开。否则在APP里永远无法访问 。 只有第一种情况下,才会告知用户授权。
//判断用户授权状态
ABAuthorizationStatus state = ABAddressBookGetAuthorizationStatus();
//判断 如果授权状态是未决定的,则请求授权
if (state == kABAuthorizationStatusNotDetermined) {
//请求
//1.获取通讯录对象
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
//2.请求授权 (用户决定后就会回调blo