track screen event when user enters the screen instead of when user leaves the screen
This commit is contained in:
parent
ec2021d6f2
commit
bda92a9ab4
|
@ -0,0 +1 @@
|
||||||
|
Analytics screen events are now tracked on screen enter instead of screen leave
|
|
@ -98,7 +98,6 @@ abstract class VectorBaseActivity<VB : ViewBinding> : AppCompatActivity(), Maver
|
||||||
* ========================================================================================== */
|
* ========================================================================================== */
|
||||||
|
|
||||||
protected var analyticsScreenName: MobileScreen.ScreenName? = null
|
protected var analyticsScreenName: MobileScreen.ScreenName? = null
|
||||||
private var screenEvent: ScreenEvent? = null
|
|
||||||
|
|
||||||
protected lateinit var analyticsTracker: AnalyticsTracker
|
protected lateinit var analyticsTracker: AnalyticsTracker
|
||||||
|
|
||||||
|
@ -337,7 +336,9 @@ abstract class VectorBaseActivity<VB : ViewBinding> : AppCompatActivity(), Maver
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
Timber.i("onResume Activity ${javaClass.simpleName}")
|
Timber.i("onResume Activity ${javaClass.simpleName}")
|
||||||
screenEvent = analyticsScreenName?.let { ScreenEvent(it) }
|
analyticsScreenName?.let {
|
||||||
|
ScreenEvent(it).send(analyticsTracker)
|
||||||
|
}
|
||||||
configurationViewModel.onActivityResumed()
|
configurationViewModel.onActivityResumed()
|
||||||
|
|
||||||
if (this !is BugReportActivity && vectorPreferences.useRageshake()) {
|
if (this !is BugReportActivity && vectorPreferences.useRageshake()) {
|
||||||
|
@ -376,7 +377,6 @@ abstract class VectorBaseActivity<VB : ViewBinding> : AppCompatActivity(), Maver
|
||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
super.onPause()
|
super.onPause()
|
||||||
screenEvent?.send(analyticsTracker, analyticsScreenName)
|
|
||||||
Timber.i("onPause Activity ${javaClass.simpleName}")
|
Timber.i("onPause Activity ${javaClass.simpleName}")
|
||||||
|
|
||||||
rageShake.stop()
|
rageShake.stop()
|
||||||
|
|
|
@ -54,7 +54,6 @@ abstract class VectorBaseBottomSheetDialogFragment<VB : ViewBinding> : BottomShe
|
||||||
* ========================================================================================== */
|
* ========================================================================================== */
|
||||||
|
|
||||||
protected var analyticsScreenName: MobileScreen.ScreenName? = null
|
protected var analyticsScreenName: MobileScreen.ScreenName? = null
|
||||||
private var screenEvent: ScreenEvent? = null
|
|
||||||
|
|
||||||
protected lateinit var analyticsTracker: AnalyticsTracker
|
protected lateinit var analyticsTracker: AnalyticsTracker
|
||||||
|
|
||||||
|
@ -139,12 +138,9 @@ abstract class VectorBaseBottomSheetDialogFragment<VB : ViewBinding> : BottomShe
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
Timber.i("onResume BottomSheet ${javaClass.simpleName}")
|
Timber.i("onResume BottomSheet ${javaClass.simpleName}")
|
||||||
screenEvent = analyticsScreenName?.let { ScreenEvent(it) }
|
analyticsScreenName?.let {
|
||||||
}
|
ScreenEvent(it).send(analyticsTracker)
|
||||||
|
}
|
||||||
override fun onPause() {
|
|
||||||
super.onPause()
|
|
||||||
screenEvent?.send(analyticsTracker)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||||
|
|
|
@ -59,7 +59,6 @@ abstract class VectorBaseFragment<VB : ViewBinding> : Fragment(), MavericksView
|
||||||
* ========================================================================================== */
|
* ========================================================================================== */
|
||||||
|
|
||||||
protected var analyticsScreenName: MobileScreen.ScreenName? = null
|
protected var analyticsScreenName: MobileScreen.ScreenName? = null
|
||||||
private var screenEvent: ScreenEvent? = null
|
|
||||||
|
|
||||||
protected lateinit var analyticsTracker: AnalyticsTracker
|
protected lateinit var analyticsTracker: AnalyticsTracker
|
||||||
|
|
||||||
|
@ -145,14 +144,15 @@ abstract class VectorBaseFragment<VB : ViewBinding> : Fragment(), MavericksView
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
Timber.i("onResume Fragment ${javaClass.simpleName}")
|
Timber.i("onResume Fragment ${javaClass.simpleName}")
|
||||||
screenEvent = analyticsScreenName?.let { ScreenEvent(it) }
|
analyticsScreenName?.let {
|
||||||
|
ScreenEvent(it).send(analyticsTracker)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@CallSuper
|
@CallSuper
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
super.onPause()
|
super.onPause()
|
||||||
Timber.i("onPause Fragment ${javaClass.simpleName}")
|
Timber.i("onPause Fragment ${javaClass.simpleName}")
|
||||||
screenEvent?.send(analyticsTracker)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@CallSuper
|
@CallSuper
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
|
|
||||||
package im.vector.app.features.analytics.screen
|
package im.vector.app.features.analytics.screen
|
||||||
|
|
||||||
import android.os.SystemClock
|
|
||||||
import im.vector.app.features.analytics.AnalyticsTracker
|
import im.vector.app.features.analytics.AnalyticsTracker
|
||||||
import im.vector.app.features.analytics.plan.MobileScreen
|
import im.vector.app.features.analytics.plan.MobileScreen
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
@ -25,8 +24,6 @@ import timber.log.Timber
|
||||||
* Track a screen display. Unique usage.
|
* Track a screen display. Unique usage.
|
||||||
*/
|
*/
|
||||||
class ScreenEvent(val screenName: MobileScreen.ScreenName) {
|
class ScreenEvent(val screenName: MobileScreen.ScreenName) {
|
||||||
private val startTime = SystemClock.elapsedRealtime()
|
|
||||||
|
|
||||||
// Protection to avoid multiple sending
|
// Protection to avoid multiple sending
|
||||||
private var isSent = false
|
private var isSent = false
|
||||||
|
|
||||||
|
@ -42,8 +39,7 @@ class ScreenEvent(val screenName: MobileScreen.ScreenName) {
|
||||||
isSent = true
|
isSent = true
|
||||||
analyticsTracker.screen(
|
analyticsTracker.screen(
|
||||||
MobileScreen(
|
MobileScreen(
|
||||||
screenName = screenNameOverride ?: screenName,
|
screenName = screenNameOverride ?: screenName
|
||||||
durationMs = (SystemClock.elapsedRealtime() - startTime).toInt()
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,12 +69,7 @@ class DialPadFragment : Fragment(), TextWatcher {
|
||||||
private var screenEvent: ScreenEvent? = null
|
private var screenEvent: ScreenEvent? = null
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
screenEvent = ScreenEvent(MobileScreen.ScreenName.Dialpad)
|
ScreenEvent(MobileScreen.ScreenName.Dialpad).send(analyticsTracker)
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPause() {
|
|
||||||
super.onPause()
|
|
||||||
screenEvent?.send(analyticsTracker)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
|
|
|
@ -163,14 +163,8 @@ class HomeActivity :
|
||||||
}
|
}
|
||||||
|
|
||||||
private val drawerListener = object : DrawerLayout.SimpleDrawerListener() {
|
private val drawerListener = object : DrawerLayout.SimpleDrawerListener() {
|
||||||
private var drawerScreenEvent: ScreenEvent? = null
|
|
||||||
override fun onDrawerOpened(drawerView: View) {
|
override fun onDrawerOpened(drawerView: View) {
|
||||||
drawerScreenEvent = ScreenEvent(MobileScreen.ScreenName.Sidebar)
|
ScreenEvent(MobileScreen.ScreenName.Sidebar).send(analyticsTracker)
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDrawerClosed(drawerView: View) {
|
|
||||||
drawerScreenEvent?.send(analyticsTracker)
|
|
||||||
drawerScreenEvent = null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDrawerStateChanged(newState: Int) {
|
override fun onDrawerStateChanged(newState: Int) {
|
||||||
|
|
|
@ -158,14 +158,8 @@ class RoomDetailActivity :
|
||||||
}
|
}
|
||||||
|
|
||||||
private val drawerListener = object : DrawerLayout.SimpleDrawerListener() {
|
private val drawerListener = object : DrawerLayout.SimpleDrawerListener() {
|
||||||
private var drawerScreenEvent: ScreenEvent? = null
|
|
||||||
override fun onDrawerOpened(drawerView: View) {
|
override fun onDrawerOpened(drawerView: View) {
|
||||||
drawerScreenEvent = ScreenEvent(MobileScreen.ScreenName.Breadcrumbs)
|
ScreenEvent(MobileScreen.ScreenName.Breadcrumbs).send(analyticsTracker)
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDrawerClosed(drawerView: View) {
|
|
||||||
drawerScreenEvent?.send(analyticsTracker)
|
|
||||||
drawerScreenEvent = null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDrawerStateChanged(newState: Int) {
|
override fun onDrawerStateChanged(newState: Int) {
|
||||||
|
|
|
@ -44,7 +44,6 @@ abstract class VectorSettingsBaseFragment : PreferenceFragmentCompat(), Maverick
|
||||||
* ========================================================================================== */
|
* ========================================================================================== */
|
||||||
|
|
||||||
protected var analyticsScreenName: MobileScreen.ScreenName? = null
|
protected var analyticsScreenName: MobileScreen.ScreenName? = null
|
||||||
private var screenEvent: ScreenEvent? = null
|
|
||||||
|
|
||||||
protected lateinit var analyticsTracker: AnalyticsTracker
|
protected lateinit var analyticsTracker: AnalyticsTracker
|
||||||
|
|
||||||
|
@ -91,17 +90,14 @@ abstract class VectorSettingsBaseFragment : PreferenceFragmentCompat(), Maverick
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
Timber.i("onResume Fragment ${javaClass.simpleName}")
|
Timber.i("onResume Fragment ${javaClass.simpleName}")
|
||||||
screenEvent = analyticsScreenName?.let { ScreenEvent(it) }
|
analyticsScreenName?.let {
|
||||||
|
ScreenEvent(it).send(analyticsTracker)
|
||||||
|
}
|
||||||
vectorActivity.supportActionBar?.setTitle(titleRes)
|
vectorActivity.supportActionBar?.setTitle(titleRes)
|
||||||
// find the view from parent activity
|
// find the view from parent activity
|
||||||
mLoadingView = vectorActivity.findViewById(R.id.vector_settings_spinner_views)
|
mLoadingView = vectorActivity.findViewById(R.id.vector_settings_spinner_views)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
|
||||||
super.onPause()
|
|
||||||
screenEvent?.send(analyticsTracker)
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract fun bindPref()
|
abstract fun bindPref()
|
||||||
|
|
||||||
abstract var titleRes: Int
|
abstract var titleRes: Int
|
||||||
|
|
Loading…
Reference in New Issue