From e83164ded502b81e2c65fe8a4c0e87459df9742f Mon Sep 17 00:00:00 2001 From: Yu Sung Date: Mon, 10 Mar 2025 20:45:07 +0900 Subject: [PATCH] =?UTF-8?q?Firebase=20=ED=8A=B8=EB=9E=98=ED=82=B9=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20-=20=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85,?= =?UTF-8?q?=20=EB=A1=9C=EA=B7=B8=EC=9D=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SodaLive/Sources/App/AppDelegate.swift | 12 +------ .../Sources/Tracking/FirebaseTracking.swift | 34 +++++++++++++++++++ .../Sources/User/Login/LoginViewModel.swift | 1 + .../Sources/User/SignUp/SignUpViewModel.swift | 1 + 4 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 SodaLive/Sources/Tracking/FirebaseTracking.swift 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)