对于 watchOS 3,Apple 建议使用WKRefreshBackgroundTask
而不是使用getNextRequestedUpdateDate
.
如何使用新方法确定两次更新之间的时间?
我只会将我的数据请求(来自 url)侵入getCurrentTimelineEntry
并更新复杂性,但我认为这并不是 Apple 真正推荐的。
一个简短的代码示例将是一个很大的帮助。
对于 watchOS 3,Apple 建议使用WKRefreshBackgroundTask
而不是使用getNextRequestedUpdateDate
.
如何使用新方法确定两次更新之间的时间?
我只会将我的数据请求(来自 url)侵入getCurrentTimelineEntry
并更新复杂性,但我认为这并不是 Apple 真正推荐的。
一个简短的代码示例将是一个很大的帮助。
我通常在另一个答案中对此进行了介绍,但我将在此处解决您的具体问题。
你是对的,你不应该破解复杂控制器来进行任何(异步)获取。数据源应该只负责根据复杂服务器的请求返回手头的现有数据。这对于 watchOS 2 是正确的,在 watchOS 3 中仍然如此。
对于 watchOS 3,每次后台刷新都可以安排下一次。
在您的特定情况下,您可以等到您的WKURLSessionRefreshBackgroundTask
任务完成下载。此时,在完成现有后台任务之前安排下一次后台刷新。
到那时,您的扩展程序将再次被唤醒以再次启动整个后台进程:
您甚至可以链接一系列不同的后台子任务,其中每个子任务处理刷新周期的一个单独方面,并负责调度以下子任务。
如果您还没有看过它,Apple 提供了它的WatchBackgroundRefresh示例代码来演示其中的一部分。您可以使用
WKExtension.shared().scheduleBackgroundRefresh(withPreferredDate:userInfo:)
在当前任务完成之前安排(初始任务或)未来任务。
尽管他们的示例使用刷新按钮来安排下一次后台刷新,但概念是相同的,无论是用户操作还是后台任务安排下一次请求)。