I'm misunderstanding something and/or doing something wrong
As far as I see the documentation of setTaskCompleted(success:), it should be called when the task is completed.
Have you tried something like this?
private func configureBackgroundTasks() {
Logger.log(.info, "Registering background tasks...")
let bgTaskIdentifier = "com.example.task"
BGTaskScheduler.shared.register(forTaskWithIdentifier: bgTaskIdentifier, using: DispatchQueue.main) { (task) in
Logger.log(.info, "Performing background task \(bgTaskIdentifier)")
Task {
if let updatedData = await appManager.getUpdateAppData() {
DispatchQueue.main.async {
appManager.data = updatedData
task.setTaskCompleted(success: true)
}
} else {
task.setTaskCompleted(success: false)
}
backgroundTaskManager.scheduleAppRefresh()
}
}
}