使用Main App时如何刷新Widget?

How to refresh Widget when Main App is used?

我正在使用 UIKit 应用程序并使用 SwiftUIWidgetkit 添加了一个小部件。 现在我想在用户在主应用程序中执行某项操作时更新小部件。

通常我应该使用 WidgetCenter.shared.reloadAllTimelines() 对吧? 但这只适用于 SwiftUI.

我可以说我的小部件应该每秒重新加载一次。但是我的小部件执行 json 请求。这也会每秒执行一次 json 请求,这是我不想要的。

供您参考。主应用与小部件共享 UserDefaults。根据 UserDefaults 它读取它并改变它的外观。

现在小部件在首次添加时会加载正确的 UserDefault。但是正如我所说,更改添加的小部件不起作用。

我想删除和添加小部件不是一个用户友好的选项。

WidgetCenter.shared.reloadAllTimelines() 独立于您使用的 UI 框架。您可以在 SwiftUI 或 UIKit.

中使用它

如果您担心发出太多请求,您可以仅在您的应用进入后台后调用该方法。