TimelineProvider 中的小部件大小和@Environment 值不匹配

Mismatch between widget size and @Environment value in TimelineProvider

大家早上好,

我正在使用 API 开发一个小部件,它根据小部件的大小发送不同大小的数组(小:3 条新闻,中:6 条新闻,大:9 条新闻)。

我的印象是 @Environment(\.widgetFamily) var family 和 TimelineProvider 的时间轴函数(我在这里调用 API)之间有问题。

事实上,在这个函数中,环境变量总是等于 systemMedium 大小,尽管小部件的“真实”大小。

你身边是否也有同样的问题? 这是 Apple 的已知错误吗? 我该如何解决这个错误?

感谢您的帮助:]

在没有看到您的代码的情况下,我最好的猜测是您没有访问传递到 TimelineProviderTimelineProviderContextfamily 属性。

您的 TimelineProvider 应该类似于:

struct MyProvider: TimelineProvider {
    func snapshot(with context: Context, completion: @escaping (Entry) -> ()) {
        fetchNewsArticles(for: context.family) { articles in
              // ...
              completion(...)
        }
    }
}

func fetchNewsArticles(for widgetFamily: WidgetFamily, completion: @escaping ... ) 
{
     switch family {
         case .systemSmall:
         // ...
}

Apple Docs - TimelineProvider

Apple Docs - TimelineProviderContext