【问题标题】:iOS 14 widget intentsiOS 14 小部件意图
【发布时间】:2021-03-05 15:08:55
【问题描述】:

我有一个设置了.intentdefinition 文件的小部件,我可以在运行小部件时从我的枚举中进行选择,但我不确定如何在代码中使用此信息。

我希望能够根据用户在小部件设置中选择的内容在getTimeline 中运行不同的代码。

如果有人可以提供帮助,将不胜感激。谢谢!

【问题讨论】:

  • 请添加相关代码。
  • 我不知道我必须使用什么代码来从我的意图中读取数据。这是我的问题。

标签: swift widget ios14 sirikit widgetkit


【解决方案1】:

要创建一个可配置小部件,您需要使用IntentConfigurationIntentTimelineProvider。这将允许您访问意图参数,您以后可以在 getTimeline 函数中使用这些参数。

  1. 在您的小部件中,您需要使用IntentConfiguration(而不是StaticConfiguration)并选择要使用的意图(intent 参数):
struct IntentWidget: Widget {
    let kind: String = "IntentWidget"

    var body: some WidgetConfiguration {
        IntentConfiguration(kind: kind, intent: CustomIntent.self, provider: Provider()) { entry in
            WidgetEntryView(entry: entry)
        }
        .configurationDisplayName("Intent Widget")
        .description("Intent Widget")
    }
}
  1. 使您的提供者符合IntentTimelineProvider(而不是TimelineProvider)。然后您就可以在 getSnapshotgetTimeline 方法中使用您的意图:
struct Provider: IntentTimelineProvider {
    func placeholder(in context: Context) -> SimpleEntry {
        SimpleEntry(date: Date())
    }

    func getSnapshot(for configuration: CustomIntent, in context: Context, completion: @escaping (SimpleEntry) -> Void) {
        completion(SimpleEntry(date: Date()))
    }

    func getTimeline(for configuration: CustomIntent, in context: Context, completion: @escaping (Timeline<Entry>) -> Void) {
        // here you can access your intent configuration
        // let selectedItem = configuration.selectedItem
        ...
        completion(timeline)
    }
}

有用的链接:


这是一个GitHub repository,其中包含不同的 Widget 示例,包括 Intent Widget。

【讨论】:

    猜你喜欢
    • 2020-10-18
    • 1970-01-01
    • 2021-03-14
    • 2021-01-10
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    相关资源
    最近更新 更多