【问题标题】:How to reload timeline of iOS 14 widget from notification response?如何从通知响应中重新加载 iOS 14 小部件的时间线?
【发布时间】:2020-10-26 12:11:36
【问题描述】:

我正在使用新的 WidgetKit 为 iOS 14 制作一个主屏幕小部件,我希望我的小部件时间线在用户响应通知时刷新。

这是我的代码目前的样子:

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
        
    if response.actionIdentifier == "actionIdentifier" {        
        print("notification response received")
        WidgetCenter.shared.reloadAllTimelines()
    }

    completionHandler()
}

但是当用户响应通知时,我的小部件没有更新。打印语句被打印,所以我知道我的应用程序正在接收响应。当我在我的应用程序的其他任何地方调用reloadAllTimeLines() 时,小部件也会刷新,因此我确信我的小部件扩展已正确实现。但在上述情况下它没有更新。

这是一个错误还是我做错了什么?或者是否有另一种方法可以在用户响应通知后重新加载小部件时间线。

【问题讨论】:

    标签: ios swift swiftui ios14 widgetkit


    【解决方案1】:

    这似乎已在 iOS 14 beta 2 中得到修复。现在,当从通知响应中调用 refreshAllTimelines() 时,小部件会正确更新。

    【讨论】:

      【解决方案2】:

      尝试在 Dispatch Main 下调用它,或者尝试延迟调用它,例如 2 秒进行测试。

      我在 SwiftUI 的列表中调用相同的方法

      let listArray = ["Item1", "Item2", "Item3"]
      List(listArray) { listObject in
          Button(action: {
              WidgetCenter.shared.reloadAllTimelines()
          }) {
              HStack {
                  Text(listObject)
                      .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .leading)
                      .padding()
              }
          }
      }
      

      而且它的作用就像魅力一样。

      【讨论】:

      • 它适用于列表、按钮等,只是不适用于通知 didRecieve 响应功能。我也尝试过 Dispatch Main,但不起作用。
      • 那么TimelineEntryRelevance 呢?尝试将其设置为TimelineEntryRelevance(score: 100),其中 100 表示向用户显示的信息非常重要,因此引擎会知道优先更新小部件。
      • 我将它设置为 60,它似乎可以正常工作。但我想知道为什么它以前不能正常工作。我认为无论相关性如何,调用 refreshAllTimelines() 都会强制刷新。
      • 好的,它在没有相关性分数的情况下也能正常工作。我认为它已在 iOS 14 beta 2 中修复。
      • 你必须导入 WidgetKit。检查this以供参考
      猜你喜欢
      • 2021-02-09
      • 2021-06-13
      • 2020-11-14
      • 2018-01-05
      • 1970-01-01
      • 2021-03-14
      • 2021-01-10
      • 2021-02-19
      • 1970-01-01
      相关资源
      最近更新 更多