diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b319e4f..68028e3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -66,13 +66,8 @@ android:usesCleartextTraffic="true" tools:targetApi="31"> - - - - - @@ -92,6 +87,15 @@ + + + + + + + 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 409f3d3..6367c1f 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 @@ -6,7 +6,6 @@ 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 @@ -59,54 +58,8 @@ class SodaLiveApp : Application() { } 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" - ) ?: "" - - 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 - } - - 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/main/DeepLinkActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/main/DeepLinkActivity.kt new file mode 100644 index 0000000..30c724b --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/main/DeepLinkActivity.kt @@ -0,0 +1,64 @@ +package kr.co.vividnext.sodalive.main + +import android.content.Intent +import android.os.Bundle +import android.os.Handler +import android.os.Looper +import androidx.appcompat.app.AppCompatActivity +import com.appsflyer.AppsFlyerLib +import com.appsflyer.deeplink.DeepLinkResult +import com.orhanobut.logger.Logger +import kr.co.vividnext.sodalive.common.SharedPreferenceManager +import kr.co.vividnext.sodalive.splash.SplashActivity + +class DeepLinkActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + 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 + } + + DeepLinkResult.Status.NOT_FOUND -> Logger.d("딥링크를 찾을 수 없습니다.") + DeepLinkResult.Status.ERROR -> Logger.d("딥링크 처리 중 오류 발생: ${deepLinkResult.error}") + } + } + + startActivity( + Intent(applicationContext, SplashActivity::class.java).apply { + data = intent.data + } + ) + + Handler(Looper.getMainLooper()).postDelayed({ + finish() + }, 1000) + } +} diff --git a/app/src/main/java/kr/co/vividnext/sodalive/main/MainActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/main/MainActivity.kt index de3b7a3..d849e3b 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/main/MainActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/main/MainActivity.kt @@ -314,51 +314,66 @@ class MainActivity : BaseActivity(ActivityMainBinding::infl } } catch (_: IllegalStateException) { } - } else { - val deepLinkValue = SharedPreferenceManager.marketingLinkValue - val deepLinkValueId = SharedPreferenceManager.marketingLinkValueId + } - if (deepLinkValue.isNotBlank() && deepLinkValueId > 0) { - when (deepLinkValue) { - "series" -> { - startActivity( - Intent(applicationContext, SeriesDetailActivity::class.java).apply { - putExtra(Constants.EXTRA_SERIES_ID, deepLinkValueId) - } - ) - } + executeOneLink() + } - "content" -> { - startActivity( - Intent( - applicationContext, - AudioContentDetailActivity::class.java - ).apply { - putExtra(Constants.EXTRA_AUDIO_CONTENT_ID, deepLinkValueId) - } - ) - } + private fun executeOneLink() { + val deepLinkValue = SharedPreferenceManager.marketingLinkValue + val deepLinkValueId = SharedPreferenceManager.marketingLinkValueId - "channel" -> { - startActivity( - Intent(applicationContext, UserProfileActivity::class.java).apply { - putExtra(Constants.EXTRA_USER_ID, deepLinkValueId) - } - ) - } - - "live" -> { - viewModel.clickTab(MainViewModel.CurrentTab.LIVE) - - handler.postDelayed({ - liveFragment.enterLiveRoom(deepLinkValueId) - }, 500) - } - - else -> {} + if (deepLinkValue.isNotBlank() && deepLinkValueId > 0) { + updatePidAndGaid() + when (deepLinkValue) { + "series" -> { + startActivity( + Intent(applicationContext, SeriesDetailActivity::class.java).apply { + putExtra(Constants.EXTRA_SERIES_ID, deepLinkValueId) + } + ) } + + "content" -> { + startActivity( + Intent( + applicationContext, + AudioContentDetailActivity::class.java + ).apply { + putExtra(Constants.EXTRA_AUDIO_CONTENT_ID, deepLinkValueId) + } + ) + } + + "channel" -> { + startActivity( + Intent(applicationContext, UserProfileActivity::class.java).apply { + putExtra(Constants.EXTRA_USER_ID, deepLinkValueId) + } + ) + } + + "live" -> { + viewModel.clickTab(MainViewModel.CurrentTab.LIVE) + + handler.postDelayed({ + liveFragment.enterLiveRoom(deepLinkValueId) + }, 500) + } + + else -> {} } } + + clearDeferredDeepLink() + } + + private fun clearDeferredDeepLink() { + SharedPreferenceManager.marketingUtmSource = "" + SharedPreferenceManager.marketingUtmMedium = "" + SharedPreferenceManager.marketingUtmCampaign = "" + SharedPreferenceManager.marketingLinkValue = "" + SharedPreferenceManager.marketingLinkValueId = 0 } private fun setupBottomTabLayout() {