BGTaskHelper.swift 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. //
  2. // SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
  3. // SPDX-License-Identifier: GPL-3.0-or-later
  4. //
  5. import Foundation
  6. @objcMembers class BGTaskHelper: NSObject {
  7. #if !APP_EXTENSION
  8. var backgroundTaskIdentifier: UIBackgroundTaskIdentifier = .invalid
  9. #endif
  10. public class func startBackgroundTask(withName taskName: String? = nil, expirationHandler handler: ((BGTaskHelper) -> Void)? = nil) -> BGTaskHelper {
  11. let taskHelper = BGTaskHelper()
  12. let expirationhandler = {
  13. if let handler = handler {
  14. handler(taskHelper)
  15. }
  16. }
  17. #if !APP_EXTENSION
  18. let backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(withName: taskName, expirationHandler: expirationhandler)
  19. taskHelper.backgroundTaskIdentifier = backgroundTaskIdentifier
  20. #endif
  21. return taskHelper
  22. }
  23. public func stopBackgroundTask() {
  24. #if !APP_EXTENSION
  25. if backgroundTaskIdentifier != .invalid {
  26. UIApplication.shared.endBackgroundTask(backgroundTaskIdentifier)
  27. backgroundTaskIdentifier = .invalid
  28. }
  29. #endif
  30. }
  31. }