Show Menu
TOPICS×

VOD playback with seeking in the main content

Scenario

This scenario comprises seeking in the main content during playback.
This is the same scenario as the VOD playback with no ads scenario, but a part of the content is scrubbed through and a seek is completed from one point in main content to another point.
Trigger  
Heartbeat method  
Network calls  
Notes  
User clicks Play
trackSessionStart
Analytics Content Start, Heartbeat Content Start
The measurement library is unaware that there is a pre-roll ad, so these network calls are identical to the VOD playback with no ads scenario.
First frame of the content plays.
trackPlay
Heartbeat Content Play
When chapter content plays before main content, the Heartbeats start when the chapter starts.
Content plays
Content Heartbeats
This network call is exactly the same as the VOD playback with no ads scenario.
User begins seek operation on content
trackSeekStart
No heartbeats go out till seek is complete, for example,
trackSeekComplete
Seek operation completes
trackSeekComplete
Heartbeats begin to go out since seek is complete. Tip: The playhead value should represent the correct new playhead after the seek.
Content is complete
trackComplete
Heartbeat Content Complete
This network call is exactly the same as the VOD playback with no ads scenario.
Session Over
trackSessionEnd
SessionEnd

Sample Code

In this scenario, the user is seeking when the main content is being played.

Android

To view this scenario in Android, set up the following code:
// Set up mediaObject MediaObject mediaInfo = MediaHeartbeat.createMediaObject( Configuration.MEDIA_NAME, Configuration.MEDIA_ID, Configuration.MEDIA_LENGTH, MediaHeartbeat.StreamType.VOD ); HashMap<String, String> mediaMetadata = new HashMap<String, String>(); mediaMetadata.put(CUSTOM_KEY_1, CUSTOM_VAL_1); mediaMetadata.put(CUSTOM_KEY_2, CUSTOM_VAL_2); // 1. Call trackSessionStart() when the user clicks Play or if autoplay is used, // i.e., there is an intent to start playback. _mediaHeartbeat.trackSessionStart(mediaInfo, mediaMetadata); ...... ...... // 2. Call trackPlay() when the playback actually starts, i.e., whn the first frame // of the main content is rendered on the screen. _mediaHeartbeat.trackPlay(); ....... ....... // 3. Track the MediaHeartbeat.Event.SeekStart event when the user begins to seek. _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.SeekStart, null, null); ....... ....... // 4. Track the MediaHeartbeat.Event.SeekComplete event when the user completes seeking _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.SeekComplete, null, null); ....... ....... // 5. Call trackComplete() when the playback reaches the end, i.e., when the media // completes and finishes playing. _mediaHeartbeat.trackComplete(); ........ ........ // 6. Call trackSessionEnd() when the playback session is over. This method must be // called even if the user does not watch the media to completion. _mediaHeartbeat.trackSessionEnd(); ........ ........

iOS

To view this scenario in iOS, set up the following code:
// Set up mediaObject ADBMediaObject *mediaObject = [ADBMediaHeartbeat createMediaObjectWithName:MEDIA_NAME o length:MEDIA_LENGTH streamType:ADBMediaHeartbeatStreamTypeVOD]; NSMutableDictionary *mediaContextData = [[NSMutableDictionary alloc] init]; [mediaContextData setObject:CUSTOM_VAL_1 forKey:CUSTOM_KEY_1]; [mediaContextData setObject:CUSTOM_VAL_2 forKey:CUSTOM_KEY_2]; // 1. Call trackSessionStart when the user clicks Play or if autoplay is used, // i.e., there is an intent to start playback. [_mediaHeartbeat trackSessionStart:mediaObject data:mediaContextData]; ....... ....... // 2. Call trackPlay when the playback actually starts, i.e., when the // first frame of the main content is rendered on the screen. [_mediaHeartbeat trackPlay]; ....... ....... // 3. Track the trackEvent:ADBMediaHeartbeatEventSeekStart event when the user // begins to seek out of the chapter with the intent to skip it. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventSeekStart mediaObject:nil data:nil]; ....... ....... // 4. Track the trackEvent:ADBMediaHeartbeatEventSeekComplete event when the // user seeks out of the chapter with the intent to skip it. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventSeekComplete mediaObject:nil data:nil]; ....... ....... // 5. Call trackComplete when the playback reaches the end, i.e., completes // and finishes playing. [_mediaHeartbeat trackComplete]; ....... ....... // 6. Call trackSessionEnd when the playback session is over. This method must // be called even if the user does not watch the media to completion. [_mediaHeartbeat trackSessionEnd]; ....... .......

JavaScript

To view this scenario, enter the following text:
// Set up mediaObject var mediaInfo = MediaHeartbeat.createMediaObject( Configuration.MEDIA_NAME, Configuration.MEDIA_ID, Configuration.MEDIA_LENGTH, MediaHeartbeat.StreamType.VOD ); var mediaMetadata = { CUSTOM_KEY_1 : CUSTOM_VAL_1, CUSTOM_KEY_2 : CUSTOM_VAL_2, CUSTOM_KEY_3 : CUSTOM_VAL_3 }; // 1. Call trackSessionStart() when Play is clicked or if autoplay is used, // i.e., there's an intent to start playback. this._mediaHeartbeat.trackSessionStart(mediaInfo, mediaMetadata); ...... ...... // 2. Call trackPlay() when the playback actually starts, i.e., when the // first frame of the ad media is rendered on the screen. this._mediaHeartbeat.trackPlay(); ....... ....... // 3. Track the MediaHeartbeat.Event.SeekStart event when the user // begins to seek. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.SeekStart); ....... ....... // 4. Track the MediaHeartbeat.Event.SeekComplete event when the user // completes seeking. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.SeekComplete); ....... ....... // 5. Call trackComplete() when the playback reaches the end, i.e., when // playback completes and finishes playing. this._mediaHeartbeat.trackComplete(); ........ ........ // 6. Call trackSessionEnd() when the playback session is over. This method must be called // even if the user does not watch the media to completion. this._mediaHeartbeat.trackSessionEnd(); ........ ........