pid를 심어놓은 광고를 타고 들어온 경우 항상 AppLaunch 이벤트를 실행하는 코드 추가
This commit is contained in:
parent
b50df2cdf3
commit
4d87544b7b
|
@ -71,6 +71,8 @@ class SodaLiveApp : Application() {
|
|||
AppsFlyerLib.getInstance().subscribeForDeepLink { deepLinkResult ->
|
||||
when (deepLinkResult.status) {
|
||||
DeepLinkResult.Status.FOUND -> {
|
||||
SharedPreferenceManager.alreadyTrackingAppLaunch = false
|
||||
|
||||
val deepLink = deepLinkResult.deepLink
|
||||
SharedPreferenceManager.marketingLinkValue = deepLink?.getStringValue(
|
||||
"deep_link_value"
|
||||
|
|
|
@ -26,6 +26,7 @@ object Constants {
|
|||
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 PREF_ALREADY_TRACKING_APP_LAUNCH = "pref_already_tracking_app_launch"
|
||||
|
||||
const val EXTRA_CAN = "extra_can"
|
||||
const val EXTRA_DATA = "extra_data"
|
||||
|
|
|
@ -210,4 +210,10 @@ object SharedPreferenceManager {
|
|||
set(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.TermsRepository
|
||||
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.UserRepository
|
||||
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(), PlaylistApi::class.java) }
|
||||
single { ApiBuilder().build(get(), AuditionApi::class.java) }
|
||||
single { ApiBuilder().build(get(), AdTrackingApi::class.java) }
|
||||
}
|
||||
|
||||
private val viewModelModule = module {
|
||||
|
@ -233,7 +236,7 @@ class AppDI(private val context: Context, isDebugMode: Boolean) {
|
|||
viewModel { SignUpViewModel(get()) }
|
||||
viewModel { TermsViewModel(get()) }
|
||||
viewModel { FindPasswordViewModel(get()) }
|
||||
viewModel { MainViewModel(get(), get(), get(), get()) }
|
||||
viewModel { MainViewModel(get(), get(), get(), get(), get()) }
|
||||
viewModel { LiveViewModel(get(), get(), get(), get()) }
|
||||
viewModel { MyPageViewModel(get(), get()) }
|
||||
viewModel { CanStatusViewModel(get()) }
|
||||
|
@ -359,6 +362,7 @@ class AppDI(private val context: Context, isDebugMode: Boolean) {
|
|||
factory { AudioContentMainTabReplayRepository(get()) }
|
||||
factory { AudioContentMainTabFreeRepository(get()) }
|
||||
factory { OriginalAudioDramaContentAllRepository(get()) }
|
||||
factory { AdTrackingRepository(get()) }
|
||||
}
|
||||
|
||||
private val moduleList = listOf(
|
||||
|
|
|
@ -202,6 +202,16 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
|
|||
|
||||
checkPermissions()
|
||||
|
||||
handler.postDelayed({
|
||||
val alreadyTrackingAppLaunch = SharedPreferenceManager.alreadyTrackingAppLaunch
|
||||
val pid = SharedPreferenceManager.marketingPid
|
||||
|
||||
if (!alreadyTrackingAppLaunch && pid.isNotBlank()) {
|
||||
SharedPreferenceManager.alreadyTrackingAppLaunch = true
|
||||
viewModel.adTrackingAppLaunch(pid = pid)
|
||||
}
|
||||
}, 1000)
|
||||
|
||||
if (
|
||||
SharedPreferenceManager.token.isNotBlank() &&
|
||||
SharedPreferenceManager.token.length > 10
|
||||
|
@ -219,7 +229,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
|
|||
deInitMiniPlayer()
|
||||
}
|
||||
|
||||
handler.postDelayed({ executeDeeplink(intent) }, 500)
|
||||
handler.postDelayed({ executeDeeplink(intent) }, 1000)
|
||||
}
|
||||
|
||||
onBackPressedDispatcher.addCallback {
|
||||
|
@ -338,7 +348,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
|
|||
val deepLinkValueId = SharedPreferenceManager.marketingLinkValueId
|
||||
|
||||
if (deepLinkValue.isNotBlank() && deepLinkValueId > 0) {
|
||||
updatePidAndGaid()
|
||||
when (deepLinkValue) {
|
||||
"series" -> {
|
||||
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.EventRepository
|
||||
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.NotiflyClient
|
||||
import kr.co.vividnext.sodalive.user.UserRepository
|
||||
|
@ -27,6 +28,7 @@ import java.util.concurrent.Executors
|
|||
class MainViewModel(
|
||||
private val userRepository: UserRepository,
|
||||
private val eventRepository: EventRepository,
|
||||
private val adTrackingRepository: AdTrackingRepository,
|
||||
private val audioContentRepository: AudioContentRepository,
|
||||
private val playbackTrackingRepository: PlaybackTrackingRepository
|
||||
) : 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