NTP-48917 | Crash & ANR vertical attribution and nap_metric inclusion (#15456)

This commit is contained in:
A Shrihari Raju
2025-03-28 12:43:48 +05:30
committed by GitHub
parent 25f7bec959
commit ae325c4f3a
6 changed files with 40 additions and 5 deletions

View File

@@ -1406,5 +1406,6 @@ class NaviAnalytics private constructor() {
const val ENGAGEMENT_SIGNALS_NOT_SUPPORTED = "engagement_signals_not_supported"
const val CHROME_TAB_SERVICE_DISCONNECTION_EXCEPTION =
"chrome_tab_service_disconnection_exception"
const val NAP_METRIC = "nap_metric"
}
}

View File

@@ -32,6 +32,7 @@ import com.naviapp.analytics.utils.NaviAnalytics.Companion.GLOBAL_ANR
import com.naviapp.analytics.utils.NaviAnalytics.Companion.GLOBAL_ANR_THIRD_PARTY
import com.naviapp.analytics.utils.NaviAnalytics.Companion.LINE_NUMBER
import com.naviapp.analytics.utils.NaviAnalytics.Companion.METHOD_NAME
import com.naviapp.analytics.utils.NaviAnalytics.Companion.NAP_METRIC
import com.naviapp.analytics.utils.NaviAnalytics.Companion.NETWORK_CONNECTIVITY_INTERCEPTOR_ENABLED
import com.naviapp.analytics.utils.NaviAnalytics.Companion.SCREEN_NAME
import com.naviapp.analytics.utils.NaviAnalytics.Companion.STACK_TRACE
@@ -130,7 +131,12 @@ class AnrErrorHandlerInitializer @Inject constructor() : ComponentInitializer {
private fun trackEvent(className: String, anrEventProperties: MutableMap<String, String>) {
val eventName =
if (className.contains(Constants.ANR_NAVI_REGEX)) GLOBAL_ANR else GLOBAL_ANR_THIRD_PARTY
CheckMateManager.logAppCrashOrAnrEvent(eventName, anrEventProperties)
CheckMateManager.logVerticalWiseAppCrashOrAnrEvent(
eventName = NAP_METRIC,
eventValues = anrEventProperties,
isAppCrash = false,
isAppAnr = true,
)
}
private fun handleAnrEventIfNeeded(anrEventProperties: MutableMap<String, String>) {

View File

@@ -19,9 +19,9 @@ import com.naviapp.analytics.utils.NaviAnalytics.Companion.APP_IN_FOREGROUND
import com.naviapp.analytics.utils.NaviAnalytics.Companion.CUSTOM_DNS_ENABLED
import com.naviapp.analytics.utils.NaviAnalytics.Companion.FOREGROUND_SCREEN
import com.naviapp.analytics.utils.NaviAnalytics.Companion.FOREGROUND_VERTICAL
import com.naviapp.analytics.utils.NaviAnalytics.Companion.GLOBAL_APP_CRASH
import com.naviapp.analytics.utils.NaviAnalytics.Companion.LINE_NUMBER
import com.naviapp.analytics.utils.NaviAnalytics.Companion.METHOD_NAME
import com.naviapp.analytics.utils.NaviAnalytics.Companion.NAP_METRIC
import com.naviapp.analytics.utils.NaviAnalytics.Companion.NETWORK_CONNECTIVITY_INTERCEPTOR_ENABLED
import com.naviapp.analytics.utils.NaviAnalytics.Companion.SCREEN_NAME
import com.naviapp.analytics.utils.NaviAnalytics.Companion.STACK_TRACE
@@ -57,7 +57,12 @@ class CrashHandlerInitializer @Inject constructor() : ComponentInitializer {
if (!application.isDifferentPackage()) {
AlfredManager.handleCrashEvent(crashEventProperties)
}
CheckMateManager.logAppCrashOrAnrEvent(GLOBAL_APP_CRASH, crashEventProperties)
CheckMateManager.logVerticalWiseAppCrashOrAnrEvent(
eventName = NAP_METRIC,
eventValues = crashEventProperties,
isAppCrash = true,
isAppAnr = false,
)
} finally {
defaultHandler?.uncaughtException(thread, exception)
}

View File

@@ -176,7 +176,7 @@ class ReactActivity : BaseActivity(), DefaultHardwareBackBtnHandler, RequestToCa
get() = NaviAnalytics.REACT_NATIVE_SCREEN
override val moduleName: ModuleNameV2
get() = ModuleNameV2.COMMON
get() = ModuleNameV2.Insurance
@SuppressLint("VisibleForTests")
override fun onCallbackRaised() {

View File

@@ -11,6 +11,7 @@ import com.navi.alfred.AlfredManager
import com.navi.analytics.utils.NaviTrackEvent
import com.navi.base.AppServiceManager
import com.navi.base.bandwidthbuddy.BandwidthAccessor
import com.navi.base.utils.orFalse
import com.navi.base.utils.orZero
import com.navi.common.checkmate.model.EventType
import com.navi.common.checkmate.model.MetricInfo
@@ -178,6 +179,28 @@ object CheckMateManager {
NaviTrackEvent.trackEventOnClickStream(eventName = eventName, eventValues = eventValues)
}
/** This method will only be used for vertical wise app crash and anr event logging. */
fun logVerticalWiseAppCrashOrAnrEvent(
eventName: String,
eventValues: Map<String, String>,
isAppCrash: Boolean? = null,
isAppAnr: Boolean? = null,
) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
getEventNameWithVerticalPrefix(
eventName = eventName,
vertical = eventValues["vertical"].orEmpty(),
),
eventValues =
eventValues +
mapOf(
"isAppCrash" to isAppCrash.orFalse().toString(),
"isAppAnr" to isAppAnr.orFalse().toString(),
),
)
}
/** This method is only used for api response error tracking. */
fun <T> recordNetworkEvent(
apiResponse: Response<GenericResponse<T>>,

View File

@@ -579,7 +579,7 @@ class LEPaymentHandlerActivity :
get() = CommonNaviAnalytics.PAYMENT_HANDLER_ACTIVITY
override val moduleName: ModuleNameV2
get() = ModuleNameV2.COMMON
get() = ModuleNameV2.PL
companion object {
const val LOAN_ACCOUNT_NUMBER = "loanAccountNumber"