Firebase 트래킹 추가

- 회원가입, 로그인
This commit is contained in:
klaus 2025-03-10 16:09:55 +09:00
parent 6065b353fd
commit c0c31a23cc
5 changed files with 49 additions and 17 deletions

View File

@ -35,8 +35,8 @@ android {
applicationId "kr.co.vividnext.sodalive"
minSdk 23
targetSdk 34
versionCode 149
versionName "1.30.0"
versionCode 151
versionName "1.31.0"
}
buildTypes {

View File

@ -4,19 +4,17 @@ import android.app.Application
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import androidx.appcompat.app.AppCompatDelegate
import com.appsflyer.AppsFlyerLib
import com.appsflyer.deeplink.DeepLinkResult
import com.facebook.FacebookSdk
import com.google.firebase.analytics.ktx.analytics
import com.google.firebase.ktx.Firebase
import com.orhanobut.logger.AndroidLogAdapter
import com.orhanobut.logger.Logger
import kr.co.vividnext.sodalive.BuildConfig
import kr.co.vividnext.sodalive.common.ImageLoaderProvider
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.di.AppDI
import kr.co.vividnext.sodalive.tracking.FirebaseTracking
class SodaLiveApp : Application() {
override fun onCreate() {
@ -106,13 +104,6 @@ class SodaLiveApp : Application() {
}
private fun logUtmInFirebase() {
val firebaseAnalytics = Firebase.analytics
val params = Bundle().apply {
putString("utm_source", SharedPreferenceManager.marketingUtmSource)
putString("utm_medium", SharedPreferenceManager.marketingUtmMedium)
putString("utm_campaign", SharedPreferenceManager.marketingUtmCampaign)
}
firebaseAnalytics.logEvent("campaign_utm", params)
FirebaseTracking.logUtm()
}
}

View File

@ -0,0 +1,36 @@
package kr.co.vividnext.sodalive.tracking
import android.os.Bundle
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.analytics.ktx.analytics
import com.google.firebase.ktx.Firebase
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
object FirebaseTracking {
fun signUp(method: String) {
val firebaseAnalytics = Firebase.analytics
val params = Bundle().apply {
putString(FirebaseAnalytics.Param.METHOD, method)
}
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SIGN_UP, params)
}
fun login(method: String) {
val firebaseAnalytics = Firebase.analytics
val params = Bundle().apply {
putString(FirebaseAnalytics.Param.METHOD, method)
}
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.LOGIN, params)
}
fun logUtm() {
val firebaseAnalytics = Firebase.analytics
val params = Bundle().apply {
putString("utm_source", SharedPreferenceManager.marketingUtmSource)
putString("utm_medium", SharedPreferenceManager.marketingUtmMedium)
putString("utm_campaign", SharedPreferenceManager.marketingUtmCampaign)
}
firebaseAnalytics.logEvent("campaign_utm", params)
}
}

View File

@ -7,6 +7,7 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.tracking.FirebaseTracking
import kr.co.vividnext.sodalive.user.UserRepository
class LoginViewModel(private val repository: UserRepository) : BaseViewModel() {
@ -53,6 +54,7 @@ class LoginViewModel(private val repository: UserRepository) : BaseViewModel() {
SharedPreferenceManager.nickname = it.data.nickname
SharedPreferenceManager.profileImage = it.data.profileImage
onSuccess(it.message)
FirebaseTracking.login("email")
} else {
if (it.message != null) {
_toastLiveData.postValue(it.message)

View File

@ -11,6 +11,7 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.tracking.FirebaseTracking
import kr.co.vividnext.sodalive.user.Gender
import kr.co.vividnext.sodalive.user.UserRepository
import okhttp3.MediaType.Companion.toMediaType
@ -21,8 +22,10 @@ import java.io.File
class SignUpViewModel(private val repository: UserRepository) : BaseViewModel() {
enum class EmailSignUpStep {
@SerializedName("STEP_1") STEP_1,
@SerializedName("STEP_2") STEP_2
@SerializedName("STEP_1")
STEP_1,
@SerializedName("STEP_2")
STEP_2
}
var email = ""
@ -108,16 +111,16 @@ class SignUpViewModel(private val repository: UserRepository) : BaseViewModel()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
_isLoading.value = false
if (it.success && it.data != null) {
SharedPreferenceManager.token = it.data.token
SharedPreferenceManager.email = it.data.email
SharedPreferenceManager.userId = it.data.userId
SharedPreferenceManager.nickname = it.data.nickname
SharedPreferenceManager.profileImage = it.data.profileImage
_isLoading.value = false
onSuccess(it.message)
FirebaseTracking.signUp("email")
} else {
_isLoading.value = false
if (it.errorProperty != null && it.message != null) {
_signUpErrorLiveData.postValue(
SignUpError(it.errorProperty, it.message)