我正在尝试制作一个 watchOS 3 应用程序,并且我想在后台任务中更新我的并发症。
首先,我在后台任务中从服务器获取新数据handle()
。之后,我通过调用来更新我的活跃并发症complicationServer.reloadTimeline(for:)
。
在控制台中,我确实看到了消息“UPDATE COMPLICATION”,因此代码被执行。
然而重新加载后,并发症仍然显示旧数据。如果我切换表盘并切换回来,那么复杂功能有时会重新加载。我是否必须做其他事情才能从后台任务重新加载并发症?
func handle(_ backgroundTasks: Set<WKRefreshBackgroundTask>) {
for task : WKRefreshBackgroundTask in backgroundTasks {
if (WKExtension.shared().applicationState == .background) {
if task is WKApplicationRefreshBackgroundTask {
let dataProvider = DataProvider()
dataProvider.getData(station: "Name", completion: { (data, error) in
self.updateComplication()
self.scheduleNextBackgroundRefresh()
task.setTaskCompleted()
})
}
} else {
task.setTaskCompleted()
}
}
}
func updateComplication() {
let complicationServer = CLKComplicationServer.sharedInstance()
for complication in complicationServer.activeComplications! {
print("UPDATE COMPLICATION")
complicationServer.reloadTimeline(for: complication)
}
}