Analytics
What you learn​
You're instantiating DIVA Player in your android front-end and relying on DIVA Back Office as the video streaming source.
The goal of this article is to presents the callback functions DIVA Player provides to customize the events payload sent to the analytics provider.
Analytic event behavior​
DIVA Player provides callback functions to customize the analytic events payload to send to the analytics provider.
Analytic event structure​
The analytics event payload identifies the event. All events have the following parameters:
- type: String
- It's the event type name.
- interactive: boolean
- It's
true
the a user interaction raises the event. It'sfalse
otherwise.
- It's
- eventArguments: Map
- It's the dictionary that contains all common (for instance videoMetaData parameters) and event-specific arguments. Find the arguments full list in the Arguments list article.
Instantiation​
To customize the events payload sent to the analytics provider, add the following code to the Basic instantiation code:
Create an instance of the DivaListener interface and override onAnalyticsCallback methods to handle the events for analytics tracking.
private val divaListener: DivaListener = object : DivaListener {
override fun onAnalyticsCallback(event: AnalyticsEvent) {
Log.i("DivaListener", "onAnalyticsCallback event: " + event.type)
}
}
The method receives an AnalyticsEvent object as a parameter, which contains information about the event.
How to connect to the third party analytics provider​
- Android
- Android TV
private val divaListener: DivaListener = object : DivaListener {
override fun onAnalyticsCallback(event: AnalyticsEvent) {
val text = StringBuilder()
event.eventArguments.forEach { x -> text.append("\t\t${x.key}: ${x.value}\n") }
Log.d("AnalyticEvent", ".\n${event.type}\n$text")
}
// Other overridden methods...
}
val conf = DivaExtraParamsMobile(
...
divaListener = divaListener,
...
)
val boAdapter = DivaBoAdapterMobile(context, lifecycleScope)
boAdapter.createDivaFragment(
...
conf,
...
) { divaFragment ->
supportFragmentManager.navigate(R.id.mainContainer, divaFragment)
}
private val divaListener: DivaListener = object : DivaListener {
override fun onAnalyticsCallback(event: AnalyticsEvent) {
val text = StringBuilder()
event.eventArguments.forEach { x -> text.append("\t\t${x.key}: ${x.value}\n") }
Log.d("AnalyticEvent", ".\n${event.type}\n$text")
Firebase.analytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM) {
param(FirebaseAnalytics.Param.ITEM_ID, event.type)
}
}
}
val conf = DivaExtraParams(
...
divaListener = divaListener,
...
)
val boAdapter = DivaBoAdapterTV(context, lifecycleScope)
boAdapter.createDivaFragment(
...
conf,
...
) { divaFragment ->
supportFragmentManager.navigate(R.id.mainContainer, divaFragment)
}