diff --git a/app/build.gradle b/app/build.gradle
index d17f855..171152a 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -175,4 +175,7 @@ dependencies {
// Facebook
implementation "com.facebook.android:facebook-core:18.0.0"
+
+ // Appsflyer
+ implementation 'com.appsflyer:af-android-sdk:6.16.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 65d2b77..8e404dd 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -54,8 +54,8 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/app/SodaLiveApp.kt b/app/src/main/java/kr/co/vividnext/sodalive/app/SodaLiveApp.kt
index 2e7e12b..0b9fb5f 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/app/SodaLiveApp.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/app/SodaLiveApp.kt
@@ -5,6 +5,8 @@ import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.os.Build
import androidx.appcompat.app.AppCompatDelegate
+import com.appsflyer.AppsFlyerLib
+import com.appsflyer.deeplink.DeepLinkResult
import com.facebook.FacebookSdk
import com.orhanobut.logger.AndroidLogAdapter
import com.orhanobut.logger.Logger
@@ -32,6 +34,8 @@ class SodaLiveApp : Application() {
ImageLoaderProvider.init(applicationContext)
FacebookSdk.fullyInitialize()
+
+ setupAppsFlyer()
}
private fun isDebuggable(): Boolean {
@@ -53,4 +57,50 @@ class SodaLiveApp : Application() {
return debuggable
}
+
+ private fun setupAppsFlyer() {
+ clearDeferredDeepLink()
+
+ // Appsflyer SDK 초기화
+ AppsFlyerLib.getInstance().init("tWF2wbJ5nSkya5Ru9mGcPU", null, 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"
+ ) ?: ""
+ SharedPreferenceManager.marketingPid = deepLink?.getStringValue(
+ "deep_link_sub1"
+ ) ?: ""
+ 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
+ }
+
+ DeepLinkResult.Status.NOT_FOUND -> Logger.d("딥링크를 찾을 수 없습니다.")
+ DeepLinkResult.Status.ERROR -> Logger.d("딥링크 처리 중 오류 발생: ${deepLinkResult.error}")
+ }
+ }
+ }
+
+ private fun clearDeferredDeepLink() {
+ SharedPreferenceManager.marketingUtmSource = ""
+ SharedPreferenceManager.marketingUtmMedium = ""
+ SharedPreferenceManager.marketingUtmCampaign = ""
+ SharedPreferenceManager.marketingLinkValue = ""
+ SharedPreferenceManager.marketingLinkValueId = 0
+ }
}
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/common/Constants.kt b/app/src/main/java/kr/co/vividnext/sodalive/common/Constants.kt
index f2be924..c07a364 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/common/Constants.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/common/Constants.kt
@@ -20,6 +20,13 @@ object Constants {
const val PREF_NOT_SHOWING_EVENT_POPUP_ID = "pref_not_showing_event_popup_id"
const val PREF_IS_VIEWED_ON_BOARDING_TUTORIAL = "pref_is_viewed_on_boarding_tutorial"
+ const val PREF_MARKETING_PID = "pref_marketing_pid"
+ const val PREF_MARKETING_UTM_SOURCE = "pref_marketing_utm_source"
+ const val PREF_MARKETING_UTM_MEDIUM = "pref_marketing_utm_medium"
+ const val PREF_MARKETING_UTM_CAMPAIGN = "pref_marketing_utm_campaign"
+ const val PREF_MARKETING_LINK_VALUE = "pref_marketing_link_value"
+ const val PREF_MARKETING_LINK_VALUE_ID = "pref_marketing_link_value_id"
+
const val EXTRA_CAN = "extra_can"
const val EXTRA_DATA = "extra_data"
const val EXTRA_TERMS = "extra_terms"
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/common/SharedPreferenceManager.kt b/app/src/main/java/kr/co/vividnext/sodalive/common/SharedPreferenceManager.kt
index c76eb3e..0634da9 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/common/SharedPreferenceManager.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/common/SharedPreferenceManager.kt
@@ -174,4 +174,40 @@ object SharedPreferenceManager {
set(value) {
sharedPreferences[Constants.PREF_IS_PLAYER_SERVICE_RUNNING] = value
}
+
+ var marketingPid: String
+ get() = sharedPreferences[Constants.PREF_MARKETING_PID]
+ set(value) {
+ sharedPreferences[Constants.PREF_MARKETING_PID] = value
+ }
+
+ var marketingUtmSource: String
+ get() = sharedPreferences[Constants.PREF_MARKETING_UTM_SOURCE]
+ set(value) {
+ sharedPreferences[Constants.PREF_MARKETING_UTM_SOURCE] = value
+ }
+
+ var marketingUtmMedium: String
+ get() = sharedPreferences[Constants.PREF_MARKETING_UTM_MEDIUM]
+ set(value) {
+ sharedPreferences[Constants.PREF_MARKETING_UTM_MEDIUM] = value
+ }
+
+ var marketingUtmCampaign: String
+ get() = sharedPreferences[Constants.PREF_MARKETING_UTM_CAMPAIGN]
+ set(value) {
+ sharedPreferences[Constants.PREF_MARKETING_UTM_CAMPAIGN] = value
+ }
+
+ var marketingLinkValue: String
+ get() = sharedPreferences[Constants.PREF_MARKETING_LINK_VALUE]
+ set(value) {
+ sharedPreferences[Constants.PREF_MARKETING_LINK_VALUE] = value
+ }
+
+ var marketingLinkValueId: Long
+ get() = sharedPreferences[Constants.PREF_MARKETING_LINK_VALUE_ID, 0L]
+ set(value) {
+ sharedPreferences[Constants.PREF_MARKETING_LINK_VALUE_ID] = value
+ }
}