Безопасность WidgetKit
WidgetKit — это платформа, с помощью которой разработчики предоставляют пользователям виджеты и расширения для циферблата. Виджеты и расширения могут отображать конфиденциальную информацию, видимую всем окружающим, особенно если дисплей всегда включен.
В iOS пользователь может выбирать, нужно ли отображать конфиденциальные данные на заблокированном экране и в режиме «Всегда включено». Пользователь может закрыть доступ к данным для виджетов на заблокированном экране, выбрав «Настройки» > «Face ID и код‑пароль» и выключив параметр «Доступ с блокировкой экрана».
На Apple Watch пользователь может настроить, нужно ли отображать конфиденциальные данные в режиме «Всегда включено», выбрав «Настройки» > «Экран и яркость» > «Всегда включено» > «Скрывать конфиденциальные расширения». Также можно выбрать скрытие определенного контента для всех или некоторых расширений.
Если пользователь выбирает скрытие контента, который считает конфиденциальным, WidgetKit отображает заполнители или сокращенный контент. Для настройки сокращений разработчик должен выполнить следующее.
1. Реализовать вызов redacted(reason:)
.
2. Прочитать свойство privacy
.
3. Предоставить индивидуальные виды с заполнителями.
Разработчики также могут отобразить данные без сокращений, используя модификатор вида unredacted()
.
Чтобы не отмечать отдельные данные как конфиденциальные (например, если весь контент виджета является конфиденциальным), разработчик может добавить поддержку защиты данных в расширение виджета. Пока пользователь не разблокирует свое устройство для соответствия выбранному уровню конфиденциальности, WidgetKit отображает заполнители вместо контента виджета. Разработчик должен включить функцию защиты данных для расширения своего виджета в Xcode, а затем задать для параметра Data Protection
значение, соответствующее нужному уровню конфиденциальности:
NSFileProtectionComplete
NSFileProtectionCompleteUnlessOpen
Когда устройство защищено код‑паролем, WidgetKit скрывает контент виджетов и отображает заполнитель, пока пользователь не выполнит вход после перезагрузки устройства. Кроме того, виджеты iOS недоступны в виде виджетов для iPhone на Mac.