2013-02-18 2 views
1

Как получить доступ к контактам в iOS 6 и более поздних версиях? Думаю, ему нужно какое-то разрешение. Может ли кто-нибудь сказать мне, как запросить разрешение программно?Программно запросить доступ к контактам в iOS 6 и более поздних версиях

+0

http://stackoverflow.com/questions/12648244/programmatically-request-access-to-contacts -in-ios-6 – rptwsthi

+0

для iOS 9 и выше http://stackoverflow.com/a/39374916/569789 – Zaraki

ответ

0

iOS попросит пользователя о ремиссии, как только вы попытаетесь получить доступ к адресной книге из кода.

Вы не можете спросить разрешения, так как iOS будет обрабатывать это для вас.

Вы можете проверить статус разрешения с помощью метода ABAddressBookGetAuthorizationStatus, вам нужно будет добавить AddressBook.framework вам проект и добавить #import <AddressBook/AddressBook.h> в файл .h или .m, где вы хотите использовать этот метод.

ABAuthorizationStatus status = ABAddressBookGetAuthorizationStatus(); 
if(status == kABAuthorizationStatusDenied) { 
// User has reject your request to access the address book 
} 
+0

Это неправильно. Вы должны запросить доступ к адресной книге, прежде чем использовать ее на iOS 6. –

+0

Неправильно, если вы используете только 'AddressBookUI.framework', вы можете просто открыть' ABPeoplePickerNavigationController', и он запросит у вас доступ. \ – rckoenes

+2

Да, но OP хотел знать, как запросить доступ, когда вы обращаетесь к адресной книге программно без 'AddressBookUI':' Может ли кто-нибудь сказать мне, как запросить разрешение программно? ' –

4
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL); 
if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) { 
    ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) { 
     if (granted) { 
      NSLog(@"Access granted!"); 
     } else { 
      NSLog(@"Access denied!"); 
     } 
    }); 
} 

Edit:
Этот ответ немного подробнее: https://stackoverflow.com/a/12648938/322548

Смежные вопросы