diff --git a/SodaLive/Sources/App/AppDelegate.swift b/SodaLive/Sources/App/AppDelegate.swift index 1868270..41fa705 100644 --- a/SodaLive/Sources/App/AppDelegate.swift +++ b/SodaLive/Sources/App/AppDelegate.swift @@ -82,17 +82,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { } private func logUtmInFirebase() { - let utmSource = AppState.shared.marketingUtmSource.trimmingCharacters(in: .whitespacesAndNewlines) - let utmMedium = AppState.shared.marketingUtmMedium.trimmingCharacters(in: .whitespacesAndNewlines) - let utmCampaign = AppState.shared.marketingUtmCampaign.trimmingCharacters(in: .whitespacesAndNewlines) - - if !utmSource.isEmpty && !utmMedium.isEmpty && !utmCampaign.isEmpty { - Analytics.logEvent("campaign_utm", parameters: [ - "utm_source": utmSource, - "utm_medium": utmMedium, - "utm_campaign": utmCampaign - ]) - } + FirebaseTracking.shared.logUtm() } } diff --git a/SodaLive/Sources/Tracking/FirebaseTracking.swift b/SodaLive/Sources/Tracking/FirebaseTracking.swift new file mode 100644 index 0000000..35d5f0a --- /dev/null +++ b/SodaLive/Sources/Tracking/FirebaseTracking.swift @@ -0,0 +1,34 @@ +// +// FirebaseTracking.swift +// SodaLive +// +// Created by klaus on 3/10/25. +// + +import Firebase + +class FirebaseTracking { + static let shared = FirebaseTracking() + + func signUp(method: String) { + Analytics.logEvent(AnalyticsEventSignUp, parameters: [AnalyticsParameterMethod: method]) + } + + func login(method: String) { + Analytics.logEvent(AnalyticsEventLogin, parameters: [AnalyticsParameterMethod: method]) + } + + func logUtm() { + let utmSource = AppState.shared.marketingUtmSource.trimmingCharacters(in: .whitespacesAndNewlines) + let utmMedium = AppState.shared.marketingUtmMedium.trimmingCharacters(in: .whitespacesAndNewlines) + let utmCampaign = AppState.shared.marketingUtmCampaign.trimmingCharacters(in: .whitespacesAndNewlines) + + if !utmSource.isEmpty && !utmMedium.isEmpty && !utmCampaign.isEmpty { + Analytics.logEvent("campaign_utm", parameters: [ + "utm_source": utmSource, + "utm_medium": utmMedium, + "utm_campaign": utmCampaign + ]) + } + } +} diff --git a/SodaLive/Sources/User/Login/LoginViewModel.swift b/SodaLive/Sources/User/Login/LoginViewModel.swift index e5b5ac8..5be6e1c 100644 --- a/SodaLive/Sources/User/Login/LoginViewModel.swift +++ b/SodaLive/Sources/User/Login/LoginViewModel.swift @@ -50,6 +50,7 @@ final class LoginViewModel: ObservableObject { let decoded = try jsonDecoder.decode(ApiResponse.self, from: responseData) if let data = decoded.data, decoded.success { + FirebaseTracking.shared.login(method: "email") UserDefaults.set(data.profileImage, forKey: .profileImage) UserDefaults.set(data.nickname, forKey: .nickname) UserDefaults.set(data.userId, forKey: .userId) diff --git a/SodaLive/Sources/User/SignUp/SignUpViewModel.swift b/SodaLive/Sources/User/SignUp/SignUpViewModel.swift index d8dd3fd..075748a 100644 --- a/SodaLive/Sources/User/SignUp/SignUpViewModel.swift +++ b/SodaLive/Sources/User/SignUp/SignUpViewModel.swift @@ -99,6 +99,7 @@ final class SignUpViewModel: ObservableObject { let decoded = try jsonDecoder.decode(ApiResponse.self, from: responseData) if let data = decoded.data, decoded.success { + FirebaseTracking.shared.signUp(method: "email") UserDefaults.set(data.profileImage, forKey: .profileImage) UserDefaults.set(data.nickname, forKey: .nickname) UserDefaults.set(data.userId, forKey: .userId)