UIAlertView и запрос доступа к адресной книге

if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) {
    ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) {
        if (granted) {
            // First time access has been granted, add the contact
            [self prepareContactsIDs];
        } else {
            UIAlertView *accessDenied = [[UIAlertView alloc] initWithTitle:@"Need Access to Addressbook" message:@"KeepItClean requires an access to addressbook in order to be usable" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
            [accessDenied show];
        }
    });
}
else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) {
    // The user has previously given access, add the contact
    if ([self isFirstRun]) {
        [self prepareContactsIDs];
    }
}
else {
    // The user has previously denied access
    // Send an alert telling user to change privacy setting in settings app
    UIAlertView *accessDenied = [[UIAlertView alloc] initWithTitle:@"Need Access to Addressbook" message:@"KeepItClean requires an access to addressbook in order to be usable" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
    [accessDenied show];
}

Здесь есть кое-что, чего я не понимаю, когда пользователю предлагается предоставить доступ, если он нажимает "Отмена", я не получаю отображение моего второго UIAlertView, представления предупреждений (accessDenied).

Также я чувствую, что есть кое-что, что я не понимаю, что связано с диспетчеризацией и очередями.

1 ответ

Попробуй это

ABPeoplePickerNavigationController *peoplePicker = [[ABPeoplePickerNavigationController  alloc] init];
peoplePicker.peoplePickerDelegate= self;
ABAddressBookRef UsersAddressBook = ABAddressBookCreateWithOptions(NULL, NULL);

if (ABAddressBookGetAuthorizationStatus()!= kABAuthorizationStatusDenied)
{ 
    //Show alert of access
} 
else
{
    //Show alert of access denied
}
Другие вопросы по тегам