У меня есть приложение 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 = этому приложению не было предоставлено разрешение на доступ к контактам.
И имя приложения по-прежнему не отображается в разделе Безопасность и конфиденциальность