
WidgetKit 安全性
WidgetKit 是一个可供开发者提供小组件和手表复杂功能的框架。这两者均可能显示敏感信息,且非常容易被人看见,尤其是在配备全天候显示屏的设备上。
在 iPhone 上,用户可以配置是否在锁定屏幕上和全天候显示启用时显示敏感数据。在“设置”中,用户可以在“设置”>“面容 ID 与密码”的“锁定时允许访问”部分中停用锁屏小组件的数据访问。
在 Apple Watch 上,用户可以配置是否在全天候显示启用时显示敏感数据,方法是选取“设置”>“显示与亮度”>“全天候显示”>“隐藏敏感复杂表盘”。用户还可以选择针对所有或单个复杂功能显示编校内容。
如果用户选择隐藏其视为私密的内容,WidgetKit 会显示占位符或编校内容。若要配置编校内容,开发者必须:
1.实现 redacted(reason:) 回调。
2.宣告 privacy 属性。
3.提供自定义占位符视图。
开发者还可使用 unredacted() 视图修饰符让视图以未编校的形式呈现。
如果整个小组件内容都属于隐私敏感信息,开发者可以不逐个将视图标记为隐私敏感内容,而是为小组件扩展开启数据保护功能。除非用户将其设备解锁至与所选隐私级别相匹配的状态,否则 WidgetKit 会显示占位符,而非小组件内容。开发者必须在 Xcode 中为小组件扩展启用数据保护功能,然后将 Data Protection 授权设为与所想提供的隐私级别相符的值:
NSFileProtectionCompleteNSFileProtectionCompleteUnlessOpen
WidgetKit 会在设备被密码锁定时隐藏这些小组件的内容并显示占位符,直到用户重启设备后进行认证。另外,这些 iOS 小组件不可作为 iPhone 小组件在 Mac 上使用。
感谢您的反馈。