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" applicationId "kr.co.vividnext.sodalive"
minSdk 23 minSdk 23
targetSdk 34 targetSdk 34
versionCode 149 versionCode 151
versionName "1.30.0" versionName "1.31.0"
} }
buildTypes { buildTypes {

View File

@ -4,19 +4,17 @@ import android.app.Application
import android.content.pm.ApplicationInfo import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Build import android.os.Build
import android.os.Bundle
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import com.appsflyer.AppsFlyerLib import com.appsflyer.AppsFlyerLib
import com.appsflyer.deeplink.DeepLinkResult import com.appsflyer.deeplink.DeepLinkResult
import com.facebook.FacebookSdk 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.AndroidLogAdapter
import com.orhanobut.logger.Logger import com.orhanobut.logger.Logger
import kr.co.vividnext.sodalive.BuildConfig import kr.co.vividnext.sodalive.BuildConfig
import kr.co.vividnext.sodalive.common.ImageLoaderProvider import kr.co.vividnext.sodalive.common.ImageLoaderProvider
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.di.AppDI import kr.co.vividnext.sodalive.di.AppDI
import kr.co.vividnext.sodalive.tracking.FirebaseTracking
class SodaLiveApp : Application() { class SodaLiveApp : Application() {
override fun onCreate() { override fun onCreate() {
@ -106,13 +104,6 @@ class SodaLiveApp : Application() {
} }
private fun logUtmInFirebase() { private fun logUtmInFirebase() {
val firebaseAnalytics = Firebase.analytics FirebaseTracking.logUtm()
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

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

View File

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