From 0a4d01424221e7ec66fca619fee8b4c82bfbd8fb Mon Sep 17 00:00:00 2001 From: Siddiboina Susai Date: Tue, 28 Jan 2025 13:19:34 +0530 Subject: [PATCH] NTP-28569: Track Adverse CTA page open events (#14699) --- .../adverse/AdverseDependencyProvider.kt | 6 ++++++ .../ui/DeeplinkManagementActivity.kt | 19 +++++++++++++++++++ .../common/ui/activity/NaviCoreActivity.kt | 13 +++++++++++++ .../common/ui/activity/NaviWebViewActivity.kt | 2 +- .../java/com/navi/common/utils/Constants.kt | 4 +++- 5 files changed, 42 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/java/com/naviapp/adverse/AdverseDependencyProvider.kt b/android/app/src/main/java/com/naviapp/adverse/AdverseDependencyProvider.kt index 57f962facc..0f15019cc0 100644 --- a/android/app/src/main/java/com/naviapp/adverse/AdverseDependencyProvider.kt +++ b/android/app/src/main/java/com/naviapp/adverse/AdverseDependencyProvider.kt @@ -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(), ) diff --git a/android/app/src/main/java/com/naviapp/deeplinkmanagement/ui/DeeplinkManagementActivity.kt b/android/app/src/main/java/com/naviapp/deeplinkmanagement/ui/DeeplinkManagementActivity.kt index c95e87ad10..5019662a5f 100644 --- a/android/app/src/main/java/com/naviapp/deeplinkmanagement/ui/DeeplinkManagementActivity.kt +++ b/android/app/src/main/java/com/naviapp/deeplinkmanagement/ui/DeeplinkManagementActivity.kt @@ -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, diff --git a/android/navi-common/src/main/java/com/navi/common/ui/activity/NaviCoreActivity.kt b/android/navi-common/src/main/java/com/navi/common/ui/activity/NaviCoreActivity.kt index e40dc720bf..fce231f5b7 100644 --- a/android/navi-common/src/main/java/com/navi/common/ui/activity/NaviCoreActivity.kt +++ b/android/navi-common/src/main/java/com/navi/common/ui/activity/NaviCoreActivity.kt @@ -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() { diff --git a/android/navi-common/src/main/java/com/navi/common/ui/activity/NaviWebViewActivity.kt b/android/navi-common/src/main/java/com/navi/common/ui/activity/NaviWebViewActivity.kt index 59ec264939..a93ea2c959 100644 --- a/android/navi-common/src/main/java/com/navi/common/ui/activity/NaviWebViewActivity.kt +++ b/android/navi-common/src/main/java/com/navi/common/ui/activity/NaviWebViewActivity.kt @@ -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 diff --git a/android/navi-common/src/main/java/com/navi/common/utils/Constants.kt b/android/navi-common/src/main/java/com/navi/common/utils/Constants.kt index 0f553a1c5a..c0cfa98467 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/Constants.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/Constants.kt @@ -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"