From 56c15e4a9eab74bcb6ff662b539f7e9f49c1aae8 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 16 Oct 2012 11:30:59 +0200 Subject: [PATCH] Update addressbook stuff. Show alert when access declined --- Classes/ContactsViewController.m | 13 +++- Classes/Utils/FastAddressBook.h | 2 + Classes/Utils/FastAddressBook.m | 42 +++++++++---- Resources/en.lproj/Localizable.strings | Bin 17168 -> 17904 bytes Resources/fr.lproj/Localizable.strings | Bin 17770 -> 18500 bytes linphone.ldb/Contents.plist | 57 +++++++++++++++++- .../Localizable/1/Localizable.strings | Bin 17168 -> 17904 bytes linphone.xcodeproj/project.pbxproj | 2 +- 8 files changed, 101 insertions(+), 15 deletions(-) diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index 117b47506..94d36acf0 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -138,7 +138,18 @@ static UICompositeViewDescription *compositeDescription = nil; [super viewDidAppear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [tableController viewDidAppear:animated]; - } + } + if(![FastAddressBook isAuthorized]) { + UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Address book",nil) + message:NSLocalizedString(@"You must authorize the application to have access to address book.\n" + "Toggle the application in Settings > Privacy > Contacts",nil) + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil]; + [error show]; + [error release]; + [[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]]; + } } - (void)viewDidDisappear:(BOOL)animated { diff --git a/Classes/Utils/FastAddressBook.h b/Classes/Utils/FastAddressBook.h index 5550b373b..d93549dae 100644 --- a/Classes/Utils/FastAddressBook.h +++ b/Classes/Utils/FastAddressBook.h @@ -30,6 +30,8 @@ + (NSString*)getContactDisplayName:(ABRecordRef)contact; + (UIImage*)getContactImage:(ABRecordRef)contact thumbnail:(BOOL)thumbnail; - (ABRecordRef)getContact:(NSString*)address; +- (void)reload; ++ (BOOL)isAuthorized; + (NSString*)appendCountryCodeIfPossible:(NSString*)number; + (NSString*)normalizePhoneNumber:(NSString*)number; + (NSString*)normalizeSipURI:(NSString*)address; diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index ffa5d826a..8028e1c37 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -107,24 +107,44 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf return [FastAddressBook appendCountryCodeIfPossible:lNormalizedAddress]; } ++ (BOOL)isAuthorized { + return !ABAddressBookGetAuthorizationStatus || ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized; +} + - (FastAddressBook*)init { if ((self = [super init]) != nil) { addressBookMap = [[NSMutableDictionary alloc] init]; - addressBook = ABAddressBookCreate(); - ABAddressBookRegisterExternalChangeCallback (addressBook, sync_address_book, self); - if (ABAddressBookGetAuthorizationStatus && ABAddressBookGetAuthorizationStatus() != kABAuthorizationStatusNotDetermined) { - ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) { - if (granted) [self loadData]; - }); - } else { - [self loadData]; - } - - + addressBook = nil; + [self reload]; } return self; } +- (void)reload { + if(addressBook != nil) { + ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_address_book, self); + CFRelease(addressBook); + addressBook = nil; + } + NSError *error = nil; + if(ABAddressBookCreateWithOptions) { + addressBook = ABAddressBookCreateWithOptions(NULL, NULL); + } else { + addressBook = ABAddressBookCreate(); + } + if(addressBook != NULL) { + ABAddressBookRegisterExternalChangeCallback (addressBook, sync_address_book, self); + [self loadData]; + } else { + [LinphoneLogger log:LinphoneLoggerError format:@"Create AddressBook: Fail(%@)", [error localizedDescription]]; + if(ABAddressBookGetAuthorizationStatus) { + ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) { + if (granted) [self reload]; + }); + } + } +} + - (void)loadData { ABAddressBookRevert(addressBook); @synchronized (addressBookMap) { diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings index d2a597f6863c1e33ec2baca6a9783430a2753f98..a85e45a154b8dc2544795341e82c4a1d027d501d 100644 GIT binary patch delta 543 zcmbQx#`vL|al;%o^Av^@h9ZVkhGHO8U`S%f2f}OyB_P`th?N)|f$~^XY<6TjZB?Jk zPzuym0#uj?WR);v05umeWHM9%4O9U0L3AQR0TAW@#gl>T5+I$=kO!8}2a*{;u`;mw zM4)^!+$kkMRUo}st!L0 delta 19 bcmey+%{ZZral;(8&3fzwR-4~AvoHYwQf3EW diff --git a/Resources/fr.lproj/Localizable.strings b/Resources/fr.lproj/Localizable.strings index 51184f0f6b843ad2ad93a68b8bc8c951323a4f61..802abc27b69d9dfed805a6570cccf67ba1419119 100644 GIT binary patch delta 467 zcmZ{g%}T>S6opS+6uQ+HNCL%$*scp!kaSz9f6!7lV_L14CX$Q+-H2OPm3a}Nuiyi; zeF9y^r|6kGQo2wslbM`*=H74a&s*hlR{2;}4@Vdw!x%Zk!!=UIJp!KFTmepyFdm_B zhs-PwhVw;rcJwl(lta^^c+!~gT1Lw=OL_8dcZCN=Og-XRb5B{!=2Lzr)C%z{=A#XS z%PNBXh1S3ok^mPham$GRYiRuDUhAA$EsYa;?F)~&dV*T8eT1i9Efh2@nnrHEL%-&p z#)p}1r{4DPMXy6Gi8f{xr^VQ(zBMQ21e4Q?qt?yLdfjbZcv delta 19 bcmX>yf$>!r change date - 2012-10-05T12:13:58Z + 2012-10-16T09:25:05Z changed values class @@ -12060,7 +12060,7 @@ flags 0 hash - 1a73bb401d656923b7ded3d958f5bb5b + c50a71e6174b7a7b723ffa38dd90788b name Localizable.strings @@ -12319,6 +12319,31 @@ La cause était: %2$@ snapshots + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + No comment provided by engineer. + errors + + flags + 0 + key + Address book + localizations + + en + Address book + fr + Annuaire + + snapshots + + change date 2001-01-01T00:00:00Z @@ -14283,6 +14308,34 @@ La cause était: %2$@ snapshots + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + No comment provided by engineer. + errors + + flags + 0 + key + You must authorize the application to have access to address book. +Toggle the application in Settings > Privacy > Contacts + localizations + + en + You must authorize the application to have access to address book. +Toggle the application in Settings > Privacy > Contacts + fr + Vous devez autoriser l'application à accéder à l'annuaire. +Activer l'application dans Réglages > Confidentialité > Contacts + + snapshots + + change date 2001-01-01T00:00:00Z diff --git a/linphone.ldb/Resources/Resources/Localizable/1/Localizable.strings b/linphone.ldb/Resources/Resources/Localizable/1/Localizable.strings index d2a597f6863c1e33ec2baca6a9783430a2753f98..a85e45a154b8dc2544795341e82c4a1d027d501d 100644 GIT binary patch delta 543 zcmbQx#`vL|al;%o^Av^@h9ZVkhGHO8U`S%f2f}OyB_P`th?N)|f$~^XY<6TjZB?Jk zPzuym0#uj?WR);v05umeWHM9%4O9U0L3AQR0TAW@#gl>T5+I$=kO!8}2a*{;u`;mw zM4)^!+$kkMRUo}st!L0 delta 19 bcmey+%{ZZral;(8&3fzwR-4~AvoHYwQf3EW diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 3591f4466..fa939349c 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -5688,7 +5688,7 @@ HEADER_SEARCH_PATHS = ""; IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ""; - PROVISIONING_PROFILE = "FFF4AA57-7302-4F48-B969-20CFC1B10BAF"; + PROVISIONING_PROFILE = "79E53132-649F-48B3-A931-24792E466A11"; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; TARGETED_DEVICE_FAMILY = "1,2";