Skip to content

Instantly share code, notes, and snippets.

@mecid
Last active July 3, 2019 14:55
Show Gist options
  • Save mecid/be571a8a27cc70ab425ad0627cc645b6 to your computer and use it in GitHub Desktop.
Save mecid/be571a8a27cc70ab425ad0627cc645b6 to your computer and use it in GitHub Desktop.
import UIKit
import BackgroundTasks
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
BGTaskScheduler.shared.register(
forTaskWithIdentifier: "pl.snowdog.example.refresh",
using: DispatchQueue.global()
) { task in
self.handleAppRefresh(task)
}
return true
}
private func handleAppRefresh(_ task: BGTask) {
let queue = OperationQueue()
queue.maxConcurrentOperationCount = 1
let appRefreshOperation = AppRefreshOperation()
queue.addOperation(appRefreshOperation)
task.expirationHandler = {
queue.cancelAllOperations()
}
let lastOperation = queue.operations.last
lastOperation?.completionBlock = {
task.setTaskCompleted(success: !(lastOperation?.isCancelled ?? false))
}
scheduleAppRefresh()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment