swift - iOS14 WidgetKit 可以请求主应用程序更新其数据吗?

标签 swift widget ios14 widgetkit

我的应用程序需要最新数据,但主应用程序可能有旧数据。
所以我想请求主应用程序更新其数据。
是否可以?
如果不是,我想知道任何替代方法。
( WidgetKit 是否应该向服务器请求最新数据??)
谢谢
===
更新
我找到了很多教程,并且所有教程都使用来自 getTimeline 的 http 请求获取最新数据的方法(不是来自主应用程序)。这不是我想要的。
有人说在主应用程序和 WidgetKit 之间共享数据的最简单方法是使用 UserDefaults。但是,如果主应用程序不更新用户默认值或使用旧数据更新值,则数据可能是旧的。 (除了服务器数据总是最新的数据)
所以我想知道的是“WidgetKit 使主应用程序更新其数据并更新用户默认值并调用reloadTimelines”的方式.所以 WidgetKit 可以使用最新数据。

最佳答案

Widget 无法告诉其父应用程序刷新其数据。
您可以:

  • 直接在 Widget 中获取数据 - 参见:How to refresh Widget data?
  • 在应用程序中启用后台通知(参见 How to run code when your app is terminated),当收到通知时,强制 WidgetKit 使用以下命令刷新其时间线:
  • WidgetCenter.shared.reloadAllTimelines()
    
    实际上,直接在 Widget 中获取数据可能更好。这样你就可以只获取必要的数据—— WidgetKit View 显示的信息通常比应用程序 View 少得多。

    关于swift - iOS14 WidgetKit 可以请求主应用程序更新其数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64256840/

    相关文章:

    ios - 使用视觉格式语言使 UIButton 之间的间距相等

    c++ - Qt 小部件在其他非 qt 窗口之上

    android - float 在 Activity 之上的对话框

    android - 从小部件启动设置/市场

    swift - 如何在 WidgetKit 预览 SwiftUI iOS 14 中加载 WKWebView

    ios - 异步操作未按顺序完成

    swift - 在协议(protocol)扩展中是否可以默认实现 get-set 变量?

    ios - Twitter Fabric TWTTweet 图像缩小

    ios - 如何在 SwiftUI 中的 ForEach 中嵌入的 HStack 中设置相对宽度?

    ios - AVPictureInPictureController 在应用程序后台运行时不会自动启动画中画