Explore Library
Code Quiz

BGAppRefreshTask One-Shot Bug

Spot why this background refresh task only ever runs a single time after launch.

Codeswift
func handleAppRefresh(task: BGAppRefreshTask) {
    let operation = RefreshOperation()

    task.expirationHandler = {
        operation.cancel()
    }

    operation.completionBlock = {
        task.setTaskCompleted(success: !operation.isCancelled)
    }

    queue.addOperation(operation)
}

func scheduleAppRefresh() {
    let request = BGAppRefreshTaskRequest(identifier: "com.app.refresh")
    request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60)
    try? BGTaskScheduler.shared.submit(request)
}

// In didFinishLaunching:
// BGTaskScheduler.shared.register(forTaskWithIdentifier: "com.app.refresh", using: nil) { task in
//     handleAppRefresh(task: task as! BGAppRefreshTask)
// }
// scheduleAppRefresh()

Why does the background refresh fire only once and never repeat?