pid를 심어놓은 광고를 타고 들어온 경우 항상 AppLaunch 이벤트를 실행하는 코드 추가
This commit is contained in:
parent
b50df2cdf3
commit
4d87544b7b
|
@ -71,6 +71,8 @@ class SodaLiveApp : Application() {
|
||||||
AppsFlyerLib.getInstance().subscribeForDeepLink { deepLinkResult ->
|
AppsFlyerLib.getInstance().subscribeForDeepLink { deepLinkResult ->
|
||||||
when (deepLinkResult.status) {
|
when (deepLinkResult.status) {
|
||||||
DeepLinkResult.Status.FOUND -> {
|
DeepLinkResult.Status.FOUND -> {
|
||||||
|
SharedPreferenceManager.alreadyTrackingAppLaunch = false
|
||||||
|
|
||||||
val deepLink = deepLinkResult.deepLink
|
val deepLink = deepLinkResult.deepLink
|
||||||
SharedPreferenceManager.marketingLinkValue = deepLink?.getStringValue(
|
SharedPreferenceManager.marketingLinkValue = deepLink?.getStringValue(
|
||||||
"deep_link_value"
|
"deep_link_value"
|
||||||
|
|
|
@ -26,6 +26,7 @@ object Constants {
|
||||||
const val PREF_MARKETING_UTM_CAMPAIGN = "pref_marketing_utm_campaign"
|
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 = "pref_marketing_link_value"
|
||||||
const val PREF_MARKETING_LINK_VALUE_ID = "pref_marketing_link_value_id"
|
const val PREF_MARKETING_LINK_VALUE_ID = "pref_marketing_link_value_id"
|
||||||
|
const val PREF_ALREADY_TRACKING_APP_LAUNCH = "pref_already_tracking_app_launch"
|
||||||
|
|
||||||
const val EXTRA_CAN = "extra_can"
|
const val EXTRA_CAN = "extra_can"
|
||||||
const val EXTRA_DATA = "extra_data"
|
const val EXTRA_DATA = "extra_data"
|
||||||
|
|
|
@ -210,4 +210,10 @@ object SharedPreferenceManager {
|
||||||
set(value) {
|
set(value) {
|
||||||
sharedPreferences[Constants.PREF_MARKETING_LINK_VALUE_ID] = value
|
sharedPreferences[Constants.PREF_MARKETING_LINK_VALUE_ID] = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var alreadyTrackingAppLaunch: Boolean
|
||||||
|
get() = sharedPreferences[Constants.PREF_ALREADY_TRACKING_APP_LAUNCH, true]
|
||||||
|
set(value) {
|
||||||
|
sharedPreferences[Constants.PREF_ALREADY_TRACKING_APP_LAUNCH] = value
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -150,6 +150,8 @@ import kr.co.vividnext.sodalive.settings.signout.SignOutViewModel
|
||||||
import kr.co.vividnext.sodalive.settings.terms.TermsApi
|
import kr.co.vividnext.sodalive.settings.terms.TermsApi
|
||||||
import kr.co.vividnext.sodalive.settings.terms.TermsRepository
|
import kr.co.vividnext.sodalive.settings.terms.TermsRepository
|
||||||
import kr.co.vividnext.sodalive.settings.terms.TermsViewModel
|
import kr.co.vividnext.sodalive.settings.terms.TermsViewModel
|
||||||
|
import kr.co.vividnext.sodalive.tracking.AdTrackingApi
|
||||||
|
import kr.co.vividnext.sodalive.tracking.AdTrackingRepository
|
||||||
import kr.co.vividnext.sodalive.user.UserApi
|
import kr.co.vividnext.sodalive.user.UserApi
|
||||||
import kr.co.vividnext.sodalive.user.UserRepository
|
import kr.co.vividnext.sodalive.user.UserRepository
|
||||||
import kr.co.vividnext.sodalive.user.UserViewModel
|
import kr.co.vividnext.sodalive.user.UserViewModel
|
||||||
|
@ -226,6 +228,7 @@ class AppDI(private val context: Context, isDebugMode: Boolean) {
|
||||||
single { ApiBuilder().build(get(), CategoryApi::class.java) }
|
single { ApiBuilder().build(get(), CategoryApi::class.java) }
|
||||||
single { ApiBuilder().build(get(), PlaylistApi::class.java) }
|
single { ApiBuilder().build(get(), PlaylistApi::class.java) }
|
||||||
single { ApiBuilder().build(get(), AuditionApi::class.java) }
|
single { ApiBuilder().build(get(), AuditionApi::class.java) }
|
||||||
|
single { ApiBuilder().build(get(), AdTrackingApi::class.java) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private val viewModelModule = module {
|
private val viewModelModule = module {
|
||||||
|
@ -233,7 +236,7 @@ class AppDI(private val context: Context, isDebugMode: Boolean) {
|
||||||
viewModel { SignUpViewModel(get()) }
|
viewModel { SignUpViewModel(get()) }
|
||||||
viewModel { TermsViewModel(get()) }
|
viewModel { TermsViewModel(get()) }
|
||||||
viewModel { FindPasswordViewModel(get()) }
|
viewModel { FindPasswordViewModel(get()) }
|
||||||
viewModel { MainViewModel(get(), get(), get(), get()) }
|
viewModel { MainViewModel(get(), get(), get(), get(), get()) }
|
||||||
viewModel { LiveViewModel(get(), get(), get(), get()) }
|
viewModel { LiveViewModel(get(), get(), get(), get()) }
|
||||||
viewModel { MyPageViewModel(get(), get()) }
|
viewModel { MyPageViewModel(get(), get()) }
|
||||||
viewModel { CanStatusViewModel(get()) }
|
viewModel { CanStatusViewModel(get()) }
|
||||||
|
@ -359,6 +362,7 @@ class AppDI(private val context: Context, isDebugMode: Boolean) {
|
||||||
factory { AudioContentMainTabReplayRepository(get()) }
|
factory { AudioContentMainTabReplayRepository(get()) }
|
||||||
factory { AudioContentMainTabFreeRepository(get()) }
|
factory { AudioContentMainTabFreeRepository(get()) }
|
||||||
factory { OriginalAudioDramaContentAllRepository(get()) }
|
factory { OriginalAudioDramaContentAllRepository(get()) }
|
||||||
|
factory { AdTrackingRepository(get()) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private val moduleList = listOf(
|
private val moduleList = listOf(
|
||||||
|
|
|
@ -202,6 +202,16 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
|
||||||
|
|
||||||
checkPermissions()
|
checkPermissions()
|
||||||
|
|
||||||
|
handler.postDelayed({
|
||||||
|
val alreadyTrackingAppLaunch = SharedPreferenceManager.alreadyTrackingAppLaunch
|
||||||
|
val pid = SharedPreferenceManager.marketingPid
|
||||||
|
|
||||||
|
if (!alreadyTrackingAppLaunch && pid.isNotBlank()) {
|
||||||
|
SharedPreferenceManager.alreadyTrackingAppLaunch = true
|
||||||
|
viewModel.adTrackingAppLaunch(pid = pid)
|
||||||
|
}
|
||||||
|
}, 1000)
|
||||||
|
|
||||||
if (
|
if (
|
||||||
SharedPreferenceManager.token.isNotBlank() &&
|
SharedPreferenceManager.token.isNotBlank() &&
|
||||||
SharedPreferenceManager.token.length > 10
|
SharedPreferenceManager.token.length > 10
|
||||||
|
@ -219,7 +229,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
|
||||||
deInitMiniPlayer()
|
deInitMiniPlayer()
|
||||||
}
|
}
|
||||||
|
|
||||||
handler.postDelayed({ executeDeeplink(intent) }, 500)
|
handler.postDelayed({ executeDeeplink(intent) }, 1000)
|
||||||
}
|
}
|
||||||
|
|
||||||
onBackPressedDispatcher.addCallback {
|
onBackPressedDispatcher.addCallback {
|
||||||
|
@ -338,7 +348,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
|
||||||
val deepLinkValueId = SharedPreferenceManager.marketingLinkValueId
|
val deepLinkValueId = SharedPreferenceManager.marketingLinkValueId
|
||||||
|
|
||||||
if (deepLinkValue.isNotBlank() && deepLinkValueId > 0) {
|
if (deepLinkValue.isNotBlank() && deepLinkValueId > 0) {
|
||||||
updatePidAndGaid()
|
|
||||||
when (deepLinkValue) {
|
when (deepLinkValue) {
|
||||||
"series" -> {
|
"series" -> {
|
||||||
startActivity(
|
startActivity(
|
||||||
|
|
|
@ -16,6 +16,7 @@ import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
||||||
import kr.co.vividnext.sodalive.settings.event.EventItem
|
import kr.co.vividnext.sodalive.settings.event.EventItem
|
||||||
import kr.co.vividnext.sodalive.settings.event.EventRepository
|
import kr.co.vividnext.sodalive.settings.event.EventRepository
|
||||||
import kr.co.vividnext.sodalive.settings.notification.UpdateNotificationSettingRequest
|
import kr.co.vividnext.sodalive.settings.notification.UpdateNotificationSettingRequest
|
||||||
|
import kr.co.vividnext.sodalive.tracking.AdTrackingRepository
|
||||||
import kr.co.vividnext.sodalive.tracking.FirebaseTracking
|
import kr.co.vividnext.sodalive.tracking.FirebaseTracking
|
||||||
import kr.co.vividnext.sodalive.tracking.NotiflyClient
|
import kr.co.vividnext.sodalive.tracking.NotiflyClient
|
||||||
import kr.co.vividnext.sodalive.user.UserRepository
|
import kr.co.vividnext.sodalive.user.UserRepository
|
||||||
|
@ -27,6 +28,7 @@ import java.util.concurrent.Executors
|
||||||
class MainViewModel(
|
class MainViewModel(
|
||||||
private val userRepository: UserRepository,
|
private val userRepository: UserRepository,
|
||||||
private val eventRepository: EventRepository,
|
private val eventRepository: EventRepository,
|
||||||
|
private val adTrackingRepository: AdTrackingRepository,
|
||||||
private val audioContentRepository: AudioContentRepository,
|
private val audioContentRepository: AudioContentRepository,
|
||||||
private val playbackTrackingRepository: PlaybackTrackingRepository
|
private val playbackTrackingRepository: PlaybackTrackingRepository
|
||||||
) : BaseViewModel() {
|
) : BaseViewModel() {
|
||||||
|
@ -222,4 +224,13 @@ class MainViewModel(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun adTrackingAppLaunch(pid: String) {
|
||||||
|
compositeDisposable.add(
|
||||||
|
adTrackingRepository.appLaunch(pid)
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe({}, {})
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
package kr.co.vividnext.sodalive.tracking
|
||||||
|
|
||||||
|
import io.reactivex.rxjava3.core.Single
|
||||||
|
import kr.co.vividnext.sodalive.common.ApiResponse
|
||||||
|
import retrofit2.http.Body
|
||||||
|
import retrofit2.http.POST
|
||||||
|
|
||||||
|
interface AdTrackingApi {
|
||||||
|
@POST("/ad-tracking/app-launch")
|
||||||
|
fun appLaunch(@Body request: AdTrackingAppLaunchRequest): Single<ApiResponse<Any>>
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
package kr.co.vividnext.sodalive.tracking
|
||||||
|
|
||||||
|
import androidx.annotation.Keep
|
||||||
|
import com.google.gson.annotations.SerializedName
|
||||||
|
|
||||||
|
@Keep
|
||||||
|
data class AdTrackingAppLaunchRequest(
|
||||||
|
@SerializedName("pid") val pid: String
|
||||||
|
)
|
|
@ -0,0 +1,5 @@
|
||||||
|
package kr.co.vividnext.sodalive.tracking
|
||||||
|
|
||||||
|
class AdTrackingRepository(private val api: AdTrackingApi) {
|
||||||
|
fun appLaunch(pid: String) = api.appLaunch(request = AdTrackingAppLaunchRequest(pid = pid))
|
||||||
|
}
|
Loading…
Reference in New Issue