我知道如何使用后台刷新和方法在一段时间间隔后获取数据。
是否有可能在早上刷新1小时范围内的数据?即使应用程序不会每天打开一次。
我可以在刷新方法完成时更新后台刷新时间间隔吗?
iOS 13 中提供的 BackgroundTasks API 可以创建 BGTaskRequest 对象(BGAppRefreshTaskRequest 或 BGProcessingTaskRequest),用于通过 BGTaskScheduler 调度后台任务。
BGTaskRequest 具有最早开始日期属性,用于在所需时间安排任务。 但这只是暗示。 IOS此时并不能100%保证它调度任务。
不要在刷新任务完成后安排下一个任务,而是在任务启动之前安排它。在 SwiftUI 中:
.backgroundTask(.appRefresh(task1)) {
await scheduleTask1() // schedule the next task (or the same task again) right here, before your task runs
if await fetchTodaysForecast() {
await notifyTodaysForecast()
}
}