问题描述
我正在 SwiftUI 中构建一个小部件并了解时间线,但是有没有办法在每次小部件出现在用户设备上时更新时间线?我想调用一个 API,以便数据是最新的,而不需要每隔几分钟调用一次。这可能吗?
解决方法
您无法创建会不断更新的小部件,因为操作系统会对其进行限制。
对于您所描述的实时体育比分小部件,您可以为您的 policy
属性在给定的时间间隔(例如,5 分钟,这可能仍然过于激进)指定未来日期。 Timeline
条目使用 .after(Date(timeIntervalSinceNow: 60 * 5)
。
您还希望对您的小部件进行智能处理,并且仅在已知比赛/比赛时间内指定这么短的时间间隔。
我强烈建议您仔细阅读 Apple 的 Time Provider Documentation 的 Determining a Refresh Policy
和 Refreshing Widgets Efficiently
部分。如果您滥用刷新间隔,操作系统将限制您的应用刷新的速度。