Недавно на работе нас попросили отредактировать содержимое виджетов экрана блокировки, когда устройство заблокировано, подобно виджету «Activity Rings», который не показывает ваш ежедневный прогресс, когда вы блокируете устройство. Оказалось, что не так уж очевидно, как этого добиться. В этом небольшом посте я хочу рассказать о том, что необходимо для достижения такого же поведения, как у виджета «Activity Rings».
Редакция, определяемая пользователем
Перед непосредственным погружением в тему, стоит упомянуть, что пользователи, независимо от того, что предлагает ваш виджет в плане защиты конфиденциальности, могут решить редактировать все виджеты, когда устройство заблокировано. Чтобы добиться этого, перейдите в раздел:
Настройки -> Face ID & код-пароль, далее активируйте «Виджеты главного экрана» в разделе «Доступ с блокировкой экрана». Это приведет к редактированию каждого виджета «Экрана Блокировки», независимо от его реализации, при использовании .privacySenstive(_:)(doc).
Редактирование пользователем при блокировке устройства
Как мы уже видели, пользователи могут выбирать их собственные настройки, когда дело доходит до редактирования. Но иногда необходимо, чтобы мы не полагались на то, что пользователь активирует какой-то скрытый переключатель глубоко в настройках iOS. Чтобы всегда редактировать виджеты, когда устройство заблокировано, вам нужно настроить две вещи:
1. Выберите NSFileProtectionComplete(doc) и добавьте его в файл вашего виджета Entitlements:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.developer.default-data-protection</key> <string>NSFileProtectionComplete</string> </dict> </plist>
⚠ NSFileProtectionComplete будет правильно работать только на реальном устройстве. В симуляторе это ни на что не влияет.
2. Добавьте модификатор privacySensitive(_) в код вью ваших виджетов.
Text("My Widget View") .privacySensitive()
Теперь попробуйте запустить ваш виджет на реальном устройстве. Вы должны увидеть поведение, похожее на то, что показано в следующем видео:
Заключение
С помощью этих двух дополнений можно отредактировать вью виджетов экрана блокировки, как только устройство будет заблокировано. Это работает совершенно независимо от любых настроек пользователя и гарантирует, что ваша логика будет применена правильно без каких-либо побочных эффектов.
Я надеюсь, что этот небольшой пост поможет вам реализовать Редактирование Экрана Блокировки для вашего следующего виджета.
До встречи в следующий раз!
Подписывайся на наши соцсети: Telegram / VKontakte
Вступай в открытый чат для iOS-разработчиков: t.me/swiftbook_chat
ссылка на оригинал статьи https://habr.com/ru/post/703158/
Добавить комментарий