问题描述
我想为我的 iOS 14 小部件添加更多高级配置选项。这就是我一直在使用的:
struct WidgetConfig {
let id: UUID
let name: String
let backgroundColor: Color?
let backgroundImage: Data?
let fontColor: Color
let fontStyle: Font.Design
let accentColor: Color
}
用户可以在应用程序中创建配置。
我尝试将配置存储在 CoreData 中,但在 IntentHandler 中获取它们非常缓慢且不可靠。小部件通常只是呈现黑色。
什么是更好的实施策略?
解决方法
自定义小部件的官方方法是使用 Siri 意图文件。这将启用您在长按小部件并选择编辑(小部件翻转)时看到的选项。
为了让用户可以轻松访问最相关的信息, 小部件可以提供可定制的属性。例如,用户可以 为股票报价小部件选择特定股票,或输入跟踪 包裹递送小部件的编号。小部件定义可定制 属性通过使用自定义意图定义,相同的机制 Siri 建议和 Siri 快捷方式用于自定义那些 相互作用。向您的小部件添加可配置的属性:
- 添加自定义 Intent 定义,用于定义 Xcode 项目的可配置属性。
- 在您的小部件中使用
IntentTimelineProvider
将用户的选择合并到您的时间线条目中。 - 如果属性依赖于动态数据,请实施 Intents 扩展。
——来自 Apple 的文章:Making a Configurable Widget
我还可以推荐有关该主题的详细 WWDC 会议:https://developer.apple.com/wwdc20/10194