使用主应用程序时如何刷新小部件?

问题描述

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

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

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

供您参考。主应用程序与小部件共享UserDefaults。根据{{​​1}},它会读取并更改其外观。

现在,在第一次添加小部件时,它会加载正确的UserDefault。但是正如我说的那样,更改添加的Widget无效。

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

解决方法

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

如果您担心发出太多请求,则只能在应用程序进入后台后才能调用该方法。