From 5ffc57a1cb0e68f43700093761d73d93e2883e98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cihat=20Gu=CC=88ndu=CC=88z?= Date: Wed, 25 Dec 2024 16:39:58 +0100 Subject: [PATCH] Fix watchOS platform building issue --- .../Helpers/DurationSignalTracker.swift | 21 +++++++++++++++++-- Sources/TelemetryDeck/TelemetryDeck.swift | 2 ++ 2 files changed, 21 insertions(+), 2 deletions(-) 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 }