每次出现时更新 iOS 小部件

问题描述

我正在 SwiftUI 中构建一个小部件并了解时间线,但是有没有办法在每次小部件出现在用户设备上时更新时间线?我想调用一个 API,以便数据是最新的,而不需要每隔几分钟调用一次。这可能吗?

解决方法

您无法创建会不断更新的小部件,因为操作系统会对其进行限制。

对于您所描述的实时体育比分小部件,您可以为您的 policy 属性在给定的时间间隔(例如,5 分钟,这可能仍然过于激进)指定未来日期。 Timeline 条目使用 .after(Date(timeIntervalSinceNow: 60 * 5)

您还希望对您的小部件进行智能处理,并且仅在已知比赛/比赛时间内指定这么短的时间间隔。

我强烈建议您仔细阅读 Apple 的 Time Provider DocumentationDetermining a Refresh PolicyRefreshing Widgets Efficiently 部分。如果您滥用刷新间隔,操作系统将限制您的应用刷新的速度。