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 + } }