iOS 14 Widgets 具有更强大的配置能力

问题描述

我想为我的 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 快捷方式用于自定义那些 相互作用。向您的小部件添加可配置的属性:

  1. 添加自定义 Intent 定义,用于定义 Xcode 项目的可配置属性。
  2. 在您的小部件中使用 IntentTimelineProvider 将用户的选择合并到您的时间线条目中。
  3. 如果属性依赖于动态数据,请实施 Intents 扩展。

——来自 Apple 的文章:Making a Configurable Widget

我还可以推荐有关该主题的详细 WWDC 会议:https://developer.apple.com/wwdc20/10194