NTP-28569: Track Adverse CTA page open events (#14699)

This commit is contained in:
Siddiboina Susai
2025-01-28 13:19:34 +05:30
committed by GitHub
parent b50f676f2d
commit 0a4d014242
5 changed files with 42 additions and 2 deletions

View File

@@ -9,6 +9,7 @@ package com.naviapp.adverse
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import androidx.core.net.toUri
import com.google.gson.Gson
import com.google.gson.GsonBuilder
@@ -27,6 +28,7 @@ import com.navi.base.utils.NetWatchManger
import com.navi.base.utils.orFalse
import com.navi.common.uitron.model.action.CtaAction
import com.navi.common.utils.Constants.ADVERSE
import com.navi.common.utils.Constants.PAGE_LAUNCH_SOURCE
import com.navi.common.utils.getSessionId
import com.navi.common.utils.registerUiTronDeSerializers
import com.navi.uitron.model.action.AnalyticsAction
@@ -73,16 +75,20 @@ class AdverseDependencyProvider : IAdverseDependencyProvider {
fun onCtaClick(ctaData: CtaData?, activity: Activity) {
ctaData?.let { cta ->
cta.bundle?.putString(PAGE_LAUNCH_SOURCE, ADVERSE)
if (ctaData.type == DYNAMIC_DEEPLINK && ctaData.url?.contains("http") == true) {
val intent = Intent(activity, DeeplinkManagementActivity::class.java)
intent.data = ctaData.url?.toUri()
intent.putExtra(BRANCH_NEW_SESSION, true)
intent.putExtra(PAGE_LAUNCH_SOURCE, ADVERSE)
activity.startActivity(intent)
} else {
DeepLinkManager.getDeepLinkListener()
?.navigateTo(
activity = activity,
ctaData = cta,
bundle = Bundle().apply { putString(PAGE_LAUNCH_SOURCE, ADVERSE) },
finish = cta.finish.orFalse(),
clearTask = cta.clearTask.orFalse(),
)

View File

@@ -26,6 +26,7 @@ import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.DEEPLINK_
import com.navi.common.model.ModuleNameV2
import com.navi.common.usecase.DeferredActionUseCase
import com.navi.common.utils.Constants.IS_REDIRECTING_FROM_DEEPLINK_ACTIVITY
import com.navi.common.utils.Constants.PAGE_LAUNCH_SOURCE
import com.navi.common.utils.TemporaryStorageHelper
import com.navi.common.utils.getDeviceSignature
import com.navi.common.utils.getLocalStorageLocation
@@ -158,6 +159,24 @@ class DeeplinkManagementActivity : BaseLauncherActivity() {
private fun processDeeplink(deeplinkData: DeeplinkData?) {
deferredActionUseCase.get().cancelJob()
analyticsTracker.sendProcessDeeplinkEvent(deeplinkData)
intent.getStringExtra(PAGE_LAUNCH_SOURCE)?.let { pageLaunchSource ->
deeplinkData?.let {
deeplinkData.deeplinkJsonObject?.put(PAGE_LAUNCH_SOURCE, pageLaunchSource)
deeplinkData.uriData?.let { uri ->
deeplinkData.uriData =
uri.buildUpon()
.appendQueryParameter(PAGE_LAUNCH_SOURCE, pageLaunchSource)
.build()
}
deeplinkData.ctaData = deeplinkData.ctaData ?: CtaData()
deeplinkData.ctaData?.bundle = deeplinkData.ctaData?.bundle ?: Bundle()
deeplinkData.ctaData?.bundle?.putString(PAGE_LAUNCH_SOURCE, pageLaunchSource)
}
}
deeplinkNavigation.redirectToDestination(
activity = this,
deeplinkData = deeplinkData,

View File

@@ -10,11 +10,16 @@ package com.navi.common.ui.activity
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.NavHostController
import com.navi.adverse.sdk.utils.AdverseTrackEvent
import com.navi.analytics.utils.NaviTrackEvent
import com.navi.analytics.utils.SCREEN_NAME_CAMEL_CASE
import com.navi.common.checkmate.core.CheckMateLatencyMapper
import com.navi.common.checkmate.core.CheckMateMapper
import com.navi.common.model.ModuleNameV2
import com.navi.common.utils.CommonUtils.formatComposeScreenName
import com.navi.common.utils.Constants.ADVERSE
import com.navi.common.utils.Constants.ADVERTISEMENT.ADVERSE_CTA_PAGE_OPENED_EVENT
import com.navi.common.utils.Constants.PAGE_LAUNCH_SOURCE
abstract class NaviCoreActivity : AppCompatActivity(), CheckMateMapper by CheckMateLatencyMapper {
@@ -31,6 +36,14 @@ abstract class NaviCoreActivity : AppCompatActivity(), CheckMateMapper by CheckM
screen = screenName,
vertical = moduleName.name,
)
val pageLaunchSource = intent.getStringExtra(PAGE_LAUNCH_SOURCE).orEmpty()
if (pageLaunchSource.equals(ADVERSE, ignoreCase = true)) {
AdverseTrackEvent.trackEvent(
ADVERSE_CTA_PAGE_OPENED_EVENT,
mapOf(SCREEN_NAME_CAMEL_CASE to screenName),
)
}
}
override fun onResume() {

View File

@@ -33,7 +33,7 @@ import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper
import com.navi.common.model.ModuleNameV2
import com.navi.common.utils.Constants
import com.navi.common.utils.Constants.ADVERSE
import com.navi.common.utils.Constants.ADVERTISEMENT.PAGE_LAUNCH_SOURCE
import com.navi.common.utils.Constants.PAGE_LAUNCH_SOURCE
import com.navi.common.utils.showToast
import com.navi.naviwidgets.utils.URL
import java.lang.Exception

View File

@@ -338,6 +338,8 @@ object Constants {
val DEFAULT_ON_CLICK_DEBOUNCE_TIME = 500.milliseconds
const val PAGE_LAUNCH_SOURCE = "page_launch_source"
object ScreenLockConstants {
const val LOGIN_SESSION_ID = "LOGIN_SESSION_ID"
const val X_IS_SCREEN_LOCK_ENABLED = "X-IS-SCREEN-LOCK-ENABLED"
@@ -362,7 +364,7 @@ object Constants {
object ADVERTISEMENT {
const val AD_CLIENT = "ad_client"
const val AD_CLIENT_REDIRECTION_URL = "ad_client_redirection_url"
const val PAGE_LAUNCH_SOURCE = "page_launch_source"
const val ADVERSE_CTA_PAGE_OPENED_EVENT = "NaviApp_adverse_cta_page_opened"
}
const val FLOW_PERMISSION = "PERMISSION"