mojave не запрашивает у пользователя доступ к контактам - PullRequest
0 голосов
/ 06 июля 2019

У меня есть приложение MacOS, работающее на 10.9 и выше, которое позволяет пользователю «искать» людей в своих контактах (так называемая AddressBook), например: [ABAddressBook sharedAddressBook]

Пользователи, которые использовали мое приложение в выпусках, предшествующих 10.14, уже имеют запись в базе данных TCC для моего приложения и могут включать и отключать доступ к контактам в разделе Безопасность и конфиденциальность, как и ожидалось.

Новые пользователи, которые запускают приложение впервые в 10.14, не получают запрос на доступ или нет. Я прочитал все об изменениях конфиденциальности в Мохаве, но, насколько я могу судить, доступ к таким контактам не изменился ... или сделал? Есть ли способ заставить запрос?

UPDATE: Просто для любопытства я добавил следующий код, используя «новую» (по сравнению с ABAddressBook) Contacts Framework, и до сих пор не могу получить всплывающее окно с просьбой разрешить разрешение для моего приложения.

if ([CNContactStore class]) {
    CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
    NSLog(@"haveAccessToContacts: authorizationStatus-%ld", status);
    if (status == CNAuthorizationStatusAuthorized)
        return 1;
    CNContactStore *contactStore = [[CNContactStore alloc] init];
    [contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
        NSLog(@"Contacts request granted: %@", granted ? @"YES" : @"NO");
        if (error)
            NSLog(@"error: %@", error);
    }];
    return 2;
} else {
    ABAddressBook *newAB = [ABAddressBook sharedAddressBook];
    if (newAB != nil)
        return 1;
}
return 0;

Вывод: Запрос на контакт предоставлен: NO

ошибка: ошибка домена = код CNErrorDomain = 100 «доступ запрещен» UserInfo = {NSLocalizedDescription = доступ запрещен, NSLocalizedFailureReason = этому приложению не было предоставлено разрешение на доступ к контактам.

И имя приложения по-прежнему не отображается в разделе Безопасность и конфиденциальность

...