标签: widgetkit

WidgetKit 小部件不允许每三秒刷新一次时间线

我创建了一个小部件,我想每三秒更新一次。

我有以下代码:

struct WidgetModel : TimelineEntry
{
    var date: Date
    var data: [Data]
}

func getTimeline(in context: Context, completion: @escaping (Timeline<WidgetModel>) -> Void)
{
    let controller = DataController()
    controller.refresh()
        
    let nextRefresh = Calendar.current.date(byAdding: .second, value: 3, to: Date())!
    let model = WidgetModel(date: nextRefresh, data: controller.data)
        
    let timeline = Timeline(entries: [model], policy: .atEnd)
        
    completion(timeline)
}
Run Code Online (Sandbox Code Playgroud)

但是,这三秒将被忽略。模拟器总是显示下一次刷新将在五分钟后。我还尝试使用 .after 而不是 .atEnd,但这没有任何效果。五分钟是最小值还是与模拟器有关?

swift widgetkit

1
推荐指数
1
解决办法
4494
查看次数

如何使我的小部件更频繁地更新或在应用程序内发生操作时更新

我有一个从我的应用程序获取数据的小部件。该小部件工作正常,但更新不够频繁。理想情况下,我希望它能够在我的应用程序中删除或添加项目时进行更新,因此如果有一种方法可以强制小部件更新,那么这是可行的。否则,如果小部件可以更频繁地获取新数据,那么也可以正常工作。

数据存储在应用程序组中的 json 文件中。我将该数据加载并解码到一个数组中,然后从该数组中选择一个随机项目进行显示。

这是小部件提供程序:

let testBook = Book(id: UUID(), name: "Name", author: "Author", genre: "Error", page: "0", total: "77")

public enum AppGroup: String {
  case Livre = "group.com.identifier"

  public var containerURL: URL {
    switch self {
    case .Livre:
      return FileManager.default.containerURL(
      forSecurityApplicationGroupIdentifier: self.rawValue)!
    }
  }
}

struct Provider: TimelineProvider {
    func placeholder(in context: Context) -> SimpleEntry {
        SimpleEntry(date: Date(), book: testBook)
    }

    func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> ()) {
        let entry = SimpleEntry(date: Date(), book: testBook)
        completion(entry) …
Run Code Online (Sandbox Code Playgroud)

json ios swift widgetkit swiftui

1
推荐指数
1
解决办法
1710
查看次数

Live Activity 中的 SwiftUI Text(_, style: .timer) 错误

我在实时活动中添加了Text(Date().addingTimeInterval(2400), style: .timer),但是当倒计时为零并且通知尚未发送时,它就开始计数。

可以修复吗?

我尝试使用普通计时器,但在实时活动中它不起作用

swift widgetkit swiftui activitykit

1
推荐指数
1
解决办法
1071
查看次数

WatchOS 和 iOS 新的 .accessoryInline Widget 不显示所有内容

我正在尝试使用新类型创建一个 WatchOS 扩展.accessoryInline,但我不明白为什么我不能在主水平堆栈中拥有多个堆栈。

请参阅以下注释代码和 WatchOS 模拟器中的不可见堆栈

在此输入图像描述

struct WidgetInlineView : View {
    var entry: BurnoutTimelineEntry
    
    var body: some View {
        HStack(spacing: 5) {
            HStack {
                Image("widgetWork")
                Text(entry.exchange.todayWork.durationString)
            }
            
            HStack {
                Image("widgetPause")
                Text(entry.exchange.todayPause.durationString)
            }
        }
    }
}

struct WidgetInline: Widget {
    var body: some WidgetConfiguration {
        StaticConfiguration(kind: "MyKind", provider: BurnoutTimelineProvider()) { entry in
            WidgetInlineView(entry: entry)
        }
        .configurationDisplayName("My Widget")
        .description("This is an example widget.")
        .supportedFamilies([.accessoryInline])
    }
}

struct WidgetInline_Previews: PreviewProvider {
    static var previews: some View {
        WidgetInlineView(entry: BurnoutTimelineEntry(date: Date()))
            .previewContext(WidgetPreviewContext(family: …
Run Code Online (Sandbox Code Playgroud)

ios widgetkit watchos

0
推荐指数
1
解决办法
806
查看次数

标签 统计

widgetkit ×4

swift ×3

ios ×2

swiftui ×2

activitykit ×1

json ×1

watchos ×1