最近做了个项目要求 访问用户的通讯录并且针对通讯录里的数据进行筛选,基于现有的IM用户体系,进行邀请添加聊天。
首先用户通讯录信息 作为重要的隐私,访问通讯录 在IOS6 以上版本 是必须经过用户同意,才可以访问。
ABAddressBookRef addressBook =NULL;
if([[UIDevice currentDevice].systemVersion floatValue] >= 6.0){
CFErrorRef error = NULL;
addressBook =ABAddressBookCreateWithOptions(NULL, &error);
ABAuthorizationStatus authorizationStatus =ABAddressBookGetAuthorizationStatus();
// dispatch_semaphore_t sema = dispatch_semaphore_create(0);
if(authorizationStatus ==kABAuthorizationStatusNotDetermined){
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted,CFErrorRef error) {
if(granted)
NSLog(@"授权");
else
NSLog(@"拒绝");
// dispatch_semaphore_signal(sema);
});
// dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
}
}
else
{
addressBook =ABAddressBookCreate();
}
- (BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
如果以上代码放在AppDelegate里,程序在第一次启动的时候会进行提示 “是否允许访问通讯录功能