问题描述
我的应用程序需要最新数据,但是主应用程序可能有旧数据。
所以我想请求主应用程序更新其数据。
有可能吗?
如果不是,我想知道其他方法。
(窗口小部件应该向服务器请求最新数据吗?)
谢谢
=== 更新
我发现许多教程,并且所有教程都使用getTimeline
方法中的http请求来获取最新数据(不是从主应用程序中获取)。这不是我想要的。
有人说,在主应用程序和小部件之间共享数据的最简便方法是使用UserDefaults。但是,如果主应用程序不更新用户默认值或使用旧数据更新值,则数据可能会很旧。 (服务器数据旁边总是最新数据)
所以我想知道的是'widget使主应用程序更新其数据并更新userdefault并调用reloadTimelines
的方式。因此小部件可以使用最新数据。
解决方法
小部件无法告诉其父应用刷新其数据。
您可以:
- 直接在小部件中获取数据-请参阅:How to refresh Widget data?
- 在应用程序中启用后台通知(请参阅How to run code when your app is terminated),并在收到通知后,强制窗口小部件使用以下方式刷新其时间轴:
with modifiers "public"
实际上,最好直接在Widget中获取数据。这样,您只能获取必需的数据-小部件视图通常显示的信息少于应用程序视图。
,是的,您可以这样; 当创建用于小部件更新的TimelineProvider时,您必须实现此功能,
class
此功能正在等待创建小部件更新时间轴。您可以提出请求,在响应之后,您可以创建时间轴并返回func的完成。