diff --git a/Sources/TelemetryDeck/Helpers/DurationSignalTracker.swift b/Sources/TelemetryDeck/Helpers/DurationSignalTracker.swift index 12d3374..143b929 100644 --- a/Sources/TelemetryDeck/Helpers/DurationSignalTracker.swift +++ b/Sources/TelemetryDeck/Helpers/DurationSignalTracker.swift @@ -1,10 +1,13 @@ -#if canImport(UIKit) +#if canImport(WatchKit) +import WatchKit +#elseif canImport(UIKit) import UIKit #elseif canImport(AppKit) import AppKit #endif @MainActor +@available(watchOS 7.0, *) final class DurationSignalTracker { static let shared = DurationSignalTracker() @@ -33,7 +36,21 @@ final class DurationSignalTracker { } private func setupAppLifecycleObservers() { - #if canImport(UIKit) + #if canImport(WatchKit) + NotificationCenter.default.addObserver( + self, + selector: #selector(handleDidEnterBackgroundNotification), + name: WKApplication.didEnterBackgroundNotification, + object: nil + ) + + NotificationCenter.default.addObserver( + self, + selector: #selector(handleWillEnterForegroundNotification), + name: WKApplication.willEnterForegroundNotification, + object: nil + ) + #elseif canImport(UIKit) NotificationCenter.default.addObserver( self, selector: #selector(handleDidEnterBackgroundNotification), diff --git a/Sources/TelemetryDeck/TelemetryDeck.swift b/Sources/TelemetryDeck/TelemetryDeck.swift index 5f87fb1..2d07386 100644 --- a/Sources/TelemetryDeck/TelemetryDeck.swift +++ b/Sources/TelemetryDeck/TelemetryDeck.swift @@ -92,6 +92,7 @@ public enum TelemetryDeck { /// /// If a new duration signal ist started while an existing duration signal with the same name was not stopped yet, the old one is replaced with the new one. @MainActor + @available(watchOS 7.0, *) static func startDurationSignal(_ signalName: String, parameters: [String: String] = [:]) { DurationSignalTracker.shared.startTracking(signalName, parameters: parameters) } @@ -111,6 +112,7 @@ public enum TelemetryDeck { /// /// If no matching signal was started, this function does nothing. @MainActor + @available(watchOS 7.0, *) static func stopAndSendDurationSignal(_ signalName: String, parameters: [String: String] = [:]) { guard let (duration, startParameters) = DurationSignalTracker.shared.stopTracking(signalName) else { return }