iOS7中读取通讯录信息授权问题
来源:互联网 发布:淘宝智能版店铺 编辑:程序博客网 时间:2024/05/16 11:39
大家知道在读取通讯录信息时需要引用AddressBook、AddressBookUI得框架,然后就可以进行相关操作。但是在iOS7中不能够像iOS6中直接读取通讯录信息,而是需要代码中取得用户授权才可以进行相关操作。
推荐使用如下方式:
CFErrorRef *error = nil; ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error); __block BOOL accessGranted = NO; if (ABAddressBookRequestAccessWithCompletion != NULL) { // we're on iOS 6 dispatch_semaphore_t sema = dispatch_semaphore_create(0); ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) { accessGranted = granted; dispatch_semaphore_signal(sema); }); dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER); } else { // we're on iOS 5 or older accessGranted = YES; }
另外,网上还有一种版本if (accessGranted) {
NSMutableArray *addressBookTemp = [NSMutableArray array];
//ABAddressBookRef addressBooks = ABAddressBookCreate();
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);
for (NSInteger i = 0; i < nPeople; i++)
{
TKAddressBook *addressBook = [[TKAddressBook alloc] init];
ABRecordRef person = CFArrayGetValueAtIndex(allPeople, i);
CFStringRef abName = ABRecordCopyValue(person, kABPersonFirstNameProperty);
CFStringRef abLastName = ABRecordCopyValue(person, kABPersonLastNameProperty);
CFStringRef abFullName = ABRecordCopyCompositeName(person);
}
...................................
}
// CFErrorRef *error = nil;// ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error);// // __block BOOL accessGranted = NO;// // if (ABAddressBookGetAuthorizationStatus()==kABAuthorizationStatusNotDetermined){// ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {// // accessGranted=granted;// });// // }// else if (ABAddressBookGetAuthorizationStatus()==kABAuthorizationStatusAuthorized){// accessGranted=YES;// }// else// {// NSLog(@"用户未授权提示");// }不推荐后者得原因是:经过测试(模拟器)后者取得用户授权后并不能立刻执行获取联系人等得相关操作,而前者可以顺利执行。
- iOS7中读取通讯录信息授权问题
- 解决IOS7中读取不到通讯录的问题
- ios读取通讯录信息
- ios读取通讯录信息
- ios读取通讯录信息
- 读取手机通讯录信息
- Swift - 读取通讯录信息
- Android读取通讯录信息
- iOS8通讯录信息读取兼容
- iOS9通讯录联系人信息读取
- 安卓读取通讯录信息
- iOS访问通讯录开发-读取联系人信息
- 访问通讯录开发-读取联系人信息
- iOS通过app读取通讯录信息
- iOS访问通讯录开发-读取联系人信息
- ios通过app读取通讯录信息
- sql存储过程读取信息中问题
- iOS7开发中对应用使用麦克风授权的检查
- maven的安装
- 大数据量高并发的数据库优化 - [技术研究]
- STL常用函数简记(不断更新)
- 合理估算线程池大小
- CSV文件简介
- iOS7中读取通讯录信息授权问题
- sqlite 网络版发布
- shell中按列值统计行数及去除重复值
- 百度Frontia应用数据存储在后台运行不起来
- Nim游戏博弈
- linux字符串转换函数 simple_strtoul
- java中出现java.lang.NoSuchMethodError: main,Exception in thread "main"
- java单例(singleton)的实现
- HDU--Max Sum