앱스플라이어 딥링크

- 가장 먼저 실행되는 Application 영역으로 이동
This commit is contained in:
klaus 2025-03-07 02:24:33 +09:00
parent f790264e44
commit 415383393a
2 changed files with 53 additions and 55 deletions

View File

@ -4,9 +4,13 @@ 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.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
@ -61,5 +65,54 @@ class SodaLiveApp : Application() {
// Appsflyer SDK 초기화 // Appsflyer SDK 초기화
AppsFlyerLib.getInstance().init("tWF2wbJ5nSkya5Ru9mGcPU", null, this) AppsFlyerLib.getInstance().init("tWF2wbJ5nSkya5Ru9mGcPU", null, this)
AppsFlyerLib.getInstance().start(this) AppsFlyerLib.getInstance().start(this)
// 딥링크 및 디퍼드 딥링크 처리
AppsFlyerLib.getInstance().subscribeForDeepLink { deepLinkResult ->
when (deepLinkResult.status) {
DeepLinkResult.Status.FOUND -> {
val deepLink = deepLinkResult.deepLink
SharedPreferenceManager.marketingLinkValue = deepLink?.getStringValue(
"deep_link_value"
) ?: ""
val marketingPid = deepLink?.getStringValue(
"deep_link_sub1"
)
if (marketingPid != null) {
SharedPreferenceManager.marketingPid = marketingPid
}
SharedPreferenceManager.marketingUtmSource = deepLink?.getStringValue(
"deep_link_sub2"
) ?: ""
SharedPreferenceManager.marketingUtmMedium = deepLink?.getStringValue(
"deep_link_sub3"
) ?: ""
SharedPreferenceManager.marketingUtmCampaign = deepLink?.getStringValue(
"deep_link_sub4"
) ?: ""
SharedPreferenceManager.marketingLinkValueId = deepLink?.getStringValue(
"deep_link_sub5"
)?.toLongOrNull() ?: 0L
logUtmInFirebase()
}
DeepLinkResult.Status.NOT_FOUND -> Logger.d("딥링크를 찾을 수 없습니다.")
DeepLinkResult.Status.ERROR -> Logger.d("딥링크 처리 중 오류 발생: ${deepLinkResult.error}")
}
}
}
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)
} }
} }

View File

@ -5,56 +5,12 @@ import android.os.Bundle
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.appsflyer.AppsFlyerLib
import com.appsflyer.deeplink.DeepLinkResult
import com.google.firebase.analytics.ktx.analytics
import com.google.firebase.ktx.Firebase
import com.orhanobut.logger.Logger
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.splash.SplashActivity import kr.co.vividnext.sodalive.splash.SplashActivity
class DeepLinkActivity : AppCompatActivity() { class DeepLinkActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
// 딥링크 및 디퍼드 딥링크 처리
AppsFlyerLib.getInstance().subscribeForDeepLink { deepLinkResult ->
when (deepLinkResult.status) {
DeepLinkResult.Status.FOUND -> {
val deepLink = deepLinkResult.deepLink
SharedPreferenceManager.marketingLinkValue = deepLink?.getStringValue(
"deep_link_value"
) ?: ""
val marketingPid = deepLink?.getStringValue(
"deep_link_sub1"
)
if (marketingPid != null) {
SharedPreferenceManager.marketingPid = marketingPid
}
SharedPreferenceManager.marketingUtmSource = deepLink?.getStringValue(
"deep_link_sub2"
) ?: ""
SharedPreferenceManager.marketingUtmMedium = deepLink?.getStringValue(
"deep_link_sub3"
) ?: ""
SharedPreferenceManager.marketingUtmCampaign = deepLink?.getStringValue(
"deep_link_sub4"
) ?: ""
SharedPreferenceManager.marketingLinkValueId = deepLink?.getStringValue(
"deep_link_sub5"
)?.toLongOrNull() ?: 0L
logUtmInFirebase()
}
DeepLinkResult.Status.NOT_FOUND -> Logger.d("딥링크를 찾을 수 없습니다.")
DeepLinkResult.Status.ERROR -> Logger.d("딥링크 처리 중 오류 발생: ${deepLinkResult.error}")
}
}
startActivity( startActivity(
Intent(applicationContext, SplashActivity::class.java).apply { Intent(applicationContext, SplashActivity::class.java).apply {
data = intent.data data = intent.data
@ -65,15 +21,4 @@ class DeepLinkActivity : AppCompatActivity() {
finish() finish()
}, 1000) }, 1000)
} }
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)
}
} }