Есть ли способ отправить пользователя в настройки конфиденциальности приложения под macOS, как мы делаем в iOS? - PullRequest
0 голосов
/ 10 октября 2019

Как и многие приложения, мое приложение для iOS предлагает пользователю возможность открыть страницу настроек приложения, если определенное разрешение на конфиденциальность было отключено.

В iOS используется специальный URL-адрес UIApplicationOpenSettingsURLString / openSettingsURLStringпереводит пользователя на страницу приложения «Настройки». Там пользователь видит различные настройки конфиденциальности, используемые приложением, в дополнение к любым настройкам настроек в файле Settings.bundle, предоставляемом приложением (если есть).

При работе с портом Mac Catalyst приложения iOS этоне работает, как надеялись. То же использование URL-адреса специальных настроек отображает ту же панель настроек, которую видит пользователь, щелкая меню «Настройки ...». И это только то, что предусмотрено в файле Settings.bundle приложения. Настройки конфиденциальности приложения не отображаются, как в iOS.

Я могу увидеть настройки конфиденциальности моего приложения в приложении настроек MacOS, нажав «Безопасность и конфиденциальность», затем вкладку «Конфиденциальность» и затем нажав на соответствующий элементв списке слева, таких как контакты или фотографии. Но эти настройки не группируются приложением.

Есть ли способ получить версию iOS для macOS, чтобы показать различные настройки конфиденциальности в одном месте, как при запуске на iOS? Если нет, есть ли хотя бы способ напрямую запустить приложение «Настройки» в macOS и отобразить панель «Конфиденциальность»?

1 Ответ

0 голосов
/ 20 октября 2019

Это не совсем то, что вы получаете в iOS, но это настолько близко, насколько я думаю, вы можете получить. Основываясь на информации, найденной на этот ответ на кнопка Какао открывает страницу системных настроек Я обновил свой код следующим образом:

Objective-C:

    NSString *url;
#if TARGET_OS_MACCATALYST
    url = @"x-apple.systempreferences:com.apple.preference.security?Privacy_Calendars"; // Update as needed
#else
    url = UIApplicationOpenSettingsURLString;
#endif
    [UIApplication.sharedApplication openURL:[NSURL URLWithString:url] options:@{} completionHandler:nil];

Swift:

let url: String
#if targetEnvironment(macCatalyst)
url = "x-apple.systempreferences:com.apple.preference.security?Privacy_Calendars" // Update as needed
#else
url = UIApplication.openSettingsURLString
#endif
UIApplication.shared.open(URL(string: url)!)

Вот URL-адреса некоторых возможных настроек конфиденциальности:

Privacy             x-apple.systempreferences:com.apple.preference.security?Privacy
Privacy-Photos      x-apple.systempreferences:com.apple.preference.security?Privacy_Photos
Privacy-Camera      x-apple.systempreferences:com.apple.preference.security?Privacy_Camera
Privacy-Microphone  x-apple.systempreferences:com.apple.preference.security?Privacy_Microphone
Privacy-Location    x-apple.systempreferences:com.apple.preference.security?Privacy_LocationServices
Privacy-Contacts    x-apple.systempreferences:com.apple.preference.security?Privacy_Contacts
Privacy-Calendars   x-apple.systempreferences:com.apple.preference.security?Privacy_Calendars
Privacy-Reminders   x-apple.systempreferences:com.apple.preference.security?Privacy_Reminders

Примечание. Пока это работает в процессе разработки, пока не знаю,уверен, будет ли это одобрено для App Store.

...