From 460c357efb14cb340502a86ebd601759fe65197b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Ju=CC=88ni?= Date: Wed, 9 Mar 2022 17:14:19 +0100 Subject: [PATCH] Add possibility to disable scheduling of background tasks --- Sources/DP3TSDK/Background/DP3TBackgroundTaskManager.swift | 4 ++++ Sources/DP3TSDK/DP3TSDK.swift | 4 ++++ Sources/DP3TSDK/DP3TTracing.swift | 6 ++++++ 3 files changed, 14 insertions(+) diff --git a/Sources/DP3TSDK/Background/DP3TBackgroundTaskManager.swift b/Sources/DP3TSDK/Background/DP3TBackgroundTaskManager.swift index 76d9d14b..56f8ebab 100644 --- a/Sources/DP3TSDK/Background/DP3TBackgroundTaskManager.swift +++ b/Sources/DP3TSDK/Background/DP3TBackgroundTaskManager.swift @@ -31,6 +31,8 @@ class DP3TBackgroundTaskManager { private let serviceClient: ExposeeServiceClientProtocol private weak var tracer: Tracer! + + var shouldReschedule: Bool = true init(handler: DP3TBackgroundHandler?, keyProvider: DiagnosisKeysProvider, @@ -183,6 +185,8 @@ class DP3TBackgroundTaskManager { @available(iOS 13.0, *) private func scheduleBackgroundTasks() { + guard self.shouldReschedule else { return } + logger.trace() // Schedule next app refresh task 12h in the future diff --git a/Sources/DP3TSDK/DP3TSDK.swift b/Sources/DP3TSDK/DP3TSDK.swift index ce1f9523..67906cc1 100644 --- a/Sources/DP3TSDK/DP3TSDK.swift +++ b/Sources/DP3TSDK/DP3TSDK.swift @@ -375,6 +375,10 @@ class DP3TSDK { exposureDayStorage.reset() URLCache.shared.removeAllCachedResponses() } + + func setBackgroundTasksEnabled(_ enabled: Bool) { + backgroundTaskManager.shouldReschedule = enabled + } @objc func backgroundRefreshStatusDidChange() { let new = UIApplication.shared.backgroundRefreshStatus diff --git a/Sources/DP3TSDK/DP3TTracing.swift b/Sources/DP3TSDK/DP3TTracing.swift index 9ef4279a..bb070c18 100644 --- a/Sources/DP3TSDK/DP3TTracing.swift +++ b/Sources/DP3TSDK/DP3TTracing.swift @@ -206,6 +206,12 @@ public enum DP3TTracing { instance = nil } + @available(iOS 12.5, *) + public static func setBackgroundTasksEnabled(_ enabled: Bool) { + instancePrecondition() + instance.setBackgroundTasksEnabled(enabled) + } + public static var loggingEnabled: Bool { set { Logger.loggingEnabled = newValue