IOS Objective-c - Получение контактов не работает - Нет запроса на запрос - Доступ запрещен - PullRequest
0 голосов
/ 13 ноября 2018

Я использую Objective-c для разработки приложения для iPad.Мне нужно получить адресную книгу для контактов.Но я не получаю запрос на доступ, и доступ остается запрещенным.Логическое «предоставлено» никогда не соответствует действительности, и код для получения массива контактов никогда не достигается.Поэтому массив контактов contactsArray остается пустым.

Ниже приводится код, который я использую:

-(void) fetchAllContacts
{
    contactsArray = [[NSMutableArray alloc] init];

    CNContactStore *store = [[CNContactStore alloc] init];

    [store requestAccessForEntityType : CNEntityTypeContacts completionHandler : ^(BOOL granted, NSError * _Nullable error)
    {
        if (granted)
        {
             // Code to get the contacts array
             // contactsArray = ....
        }       
    }];
}

Любая помощь?

Спасибо

1 Ответ

0 голосов
/ 13 ноября 2018

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

Одним из вариантов является создание настраиваемого приглашения, в котором говорится, что доступ запрещен с помощью кнопки для перехода непосредственно на страницу настроек приложения с использованием UIApplicationOpenSettingsURLString в качестве URL-адреса.

//objc
NSURL * url = [[NSURL alloc] initWithString:UIApplicationOpenSettingsURLString];
[UIApplication.sharedApplication openURL:url];

//swift
if let url = URL(string: UIApplicationOpenSettingsURLString) {
    UIApplication.shared.openURL(url)
}
...