From f4f59fe279d3b182335546c212184309e7b8aa54 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 1 Oct 2012 17:18:57 +0200 Subject: [PATCH] request of address book authorization on IOS6 --- Classes/ContactsTableViewController.m | 3 ++- Classes/Utils/FastAddressBook.m | 12 ++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index eec7d4ae0..2fcd57e3f 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -37,6 +37,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf avatarMap = [[NSMutableDictionary alloc] init]; addressBook = ABAddressBookCreate(); + ABAddressBookRegisterExternalChangeCallback(addressBook, sync_address_book, self); } @@ -134,7 +135,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf CFRelease(lFirstName); } } - CFRelease(lContacts); + if (lContacts) CFRelease(lContacts); } [self.tableView reloadData]; } diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index bdb6e1b70..ffa5d826a 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -111,8 +111,16 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf if ((self = [super init]) != nil) { addressBookMap = [[NSMutableDictionary alloc] init]; addressBook = ABAddressBookCreate(); - ABAddressBookRegisterExternalChangeCallback (addressBook, sync_address_book, self); - [self loadData]; + ABAddressBookRegisterExternalChangeCallback (addressBook, sync_address_book, self); + if (ABAddressBookGetAuthorizationStatus && ABAddressBookGetAuthorizationStatus() != kABAuthorizationStatusNotDetermined) { + ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) { + if (granted) [self loadData]; + }); + } else { + [self loadData]; + } + + } return self; }