iPhone 锁定时如何隐藏 iOS 14 小部件内容?

问题描述

我有一个显示一些敏感数据的小部件。我们知道 iOS 小部件可以放置在主屏幕和今日小部件页面上。

Today widget page 页面即使在锁定状态下也可以看到!这是出现的问题,如果用户锁定了他们的手机,我想隐藏内容

我可以在 iOS Screen Time 小部件中看到这种行为。如果我们锁定手机,则不会暴露任何数据。一旦我解锁(也就是激活面容 ID),所有数据都是可见的。

锁定状态

Locked State

解锁状态

Unlocked State

解决方法

您可以通过启用数据保护功能来实现

https://developer.apple.com/documentation/widgetkit/creating-a-widget-extension

您需要设置数据保护权利

NSFileProtectionComplete 或 NSFileProtectionCompleteUnlessOpen,设备被锁定。

https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_default-data-protection

在 Swift 5.5 iOS 15+ 中有一个新的 ViewModifier

.privacySensitive(true)

只需将其添加到包含敏感内容的 View

https://developer.apple.com/videos/play/wwdc2021/10018/