When using our app's SDK, it can be useful to gain deeper insights into what's happening within the SDK itself. This document serves as a guide to the analytics events available through Firework Android SDK API.
Firework Analytics
Before we dive into the analytics events, let's take a moment to review how to register and unregister for analytics tracking.
❗Note that not unregistering from the analytics API can lead to memory leaks
Registering and unregistering for firework analytics
To register for the specific event simply add the '@FwAnalyticCallable' annotation to your function, and pass in the desired event type as a parameter. This gives you the flexibility to register for any analytics event, making it easy to capture and analyse the specific data points you need for your app.
Supported events
Video Playback Analytics Events Tracking
If the host app needs to monitor events that occur during video playback, the Firework SDK offers a simple solution. The SDK enables the host app to easily observe and track events for each video that is played by the user, providing valuable insights into user engagement and behavior.
List of video playback events:
❗PlayerLifecycleAnalyticsEvent is a parent event for other playback events.If host app subscribes to this event, it will receive all playback event that are available.
Here is the list of available playback events:
OnPrepared: sent when the video is prepared for playing but has not started yet.
OnBuffering: sent when video is buffering.
OnIdle: sent when video is buffered and prepared fully but has not started to play.
OnRepeat: sent when video is repeated.
OnEnded: sent when video is finished. It is not sent when the user swipes to the next video, it's only sent when the video reaches to the end of the playback progress.
OnError: sent when video cannot be played due to an error.
OnSeek: sent when video playback is moved to a new position.
OnVideoSizeChanged: sent when the dimension of the video has been changed.
OnPlaybackProgressChanged: sent during the payback and contains current progress value in seconds.
OnFirstQuartile: sent when the first 25% of the video has passed
OnSecondQuartile: sent when the first 50% of the video has passed
OnThirdQuartile: sent when the first 75% of the video has passed
OnLast90PercentOfTheVideo: sent when the first 90% of the video has passed
OnStarted: sent when the content starts for the first time in the player.
All playback analytics events contains the following info:
val videoInfo: VideoInfo// information about the videoval progress: Double// video progress in seconds
VideoInfo object contains the following information:
val id: String, // content idval caption: String, // content caption (title)val duration: Double, // duration in secondsval badge: String?, // text of the video badgeval playerHeight: Int?, // content widthval playerWidth: Int?, // content heightval hasCta: Boolean, // true if the video has "call to aciton" buttonval isAd: Boolean// true if the video is an Ad videoval hashtags: List<String>, // Hashtags list added to the videoval feedType: String, // The feed resource typeval channelId: String? // Channel ID if the feed resource has oneval playlistId: String? // Playlist ID if the feed resource has one
Share Button Click Tracking
ShareButtonClickListener: This listener will be called when the share button on the video player page is being called by the user.
You can simply use the VideoInfo object to obtain more details.
CTA Button Click Tracking
CtaButtonClickHandler: This handler is called when the CTA button is pressed by the user. By default, the SDK will open the CTA url in the default browser of the phone, however, if you set the SDK to handle CTA action in the ViewOptions true the SDK will not do anything and just report that CTA_clicked event to the host app.
All the description about the VideoInfo is true here as well.
@FwAnalyticCallablefunonCtaButtonClicked(event: CtaButtonClickAnalyticsEvent) { Log.i("fw-analytics-cta", event.label +" "+ event.actionUrl)}val playerOptions = PlayerOption.Builder() .sdkHandleCtaButtonClick(true) // This value here determines whether the SDK should handle the CTA click or not .build()ViewOptions .Builder() .playerOption(playerOptions) .ctaOption(ctaOptions) .build()
@FwAnalyticCallablevoidonCtaButtonClicked(CtaButtonClickAnalyticsEvent event){Log.i("fw-analytics-cta","OnCTA"+event.getVideoInfo());}PlayerOption playerOptions =new PlayerOption.Builder().sdkHandleCtaButtonClick(false) // This value here determines whether the SDK should handle the CTA click or not.build();CtaOption ctaOptions =new CtaOption.Builder().ctaDelay(newCtaDelay(2.0f,CtaDelayUnit.SECONDS)).build();ViewOptions viewOptions =new ViewOptions.Builder()j.playerOption(playerOptions).ctaOption(ctaOptions).build();