Show Menu
主題×

具有前段廣告的 VOD 播放

在此案例中,前段廣告已插入到主要內容之前。除非另有指定,否則網路呼叫與 沒有廣告的 VOD 播放 案例中的呼叫相同。網路呼叫會同時發生,但裝載不同。
觸發
心率方法
網路呼叫
附註  
使用者點按播放
trackSessionStart
Analytics 內容開始、心率內容開始
Measurement Library 不知道有前段廣告,因此這些網路呼叫仍完全等同於 沒有廣告的 VOD 播放 案例。
廣告開始。
  • trackEvent:AdBreakStart
  • trackEvent:AdStart
Analytics 廣告開始、心率廣告開始
已播放廣告 #1 的時間格。
trackPlay
心率廣告播放
廣告內容在主要內容之前播放,而心率在廣告開始時啟動。
廣告播放。
廣告心率
廣告 #2 完成播放。
trackEvent:trackAdComplete
心率廣告完成
已到達廣告結尾。
已播放廣告 #2 的第一個時間格。
trackEvent:AdStart
Analytics 廣告開始、心率廣告開始
廣告播放。
廣告心率
廣告 #2 完成播放。
  • trackEvent:trackAdComplete
  • trackEvent:AdBreakComplete
心率廣告完成
已到達廣告和 Pod 結尾。
內容播放。
內容心率
此網路呼叫完全等同於 沒有廣告的 VOD 播放 案例。
內容已完成。
trackComplete
心率內容完成
此網路呼叫完全等同於 沒有廣告的 VOD 播放 案例。
工作階段已結束
trackSessionEnd
SessionEnd

參數

當廣告播放開始時,會傳送
Heartbeat Ad Start
呼叫。如果廣告的開頭不符合 10 秒的計時器,
Heartbeat Ad Start
呼叫會延遲幾秒,然後呼叫會進入下一個 10 秒的間隔。發生此情況時,
Content Heartbeat
會以相同的間隔傳出,而您可以透過查看事件類型和資產類型來區分這兩個呼叫:

心率廣告開始

參數
附註
s:event:type
start
s:asset:type
ad
廣告會遵循與
Content Heartbeats
相同的基本模式,因此
Ad Play
呼叫類似於
Content Play
呼叫。

心率廣告播放呼叫

參數
附註
s:event:type
play
s:asset:type
ad
這些參數類似於
Content Heartbeats
呼叫,但
Ad Heartbeats
呼叫包含一些額外的參數:

廣告心率

參數
附註
s:event:type
play
s:asset:type
ad
s:asset:ad_id
<ad ID>
s:asset:pod_id
<ad pod ID>
類似於
Heartbeat Content Complete
呼叫,當完成時,以及到達播放點結尾時,會傳送
Heartbeat Ad Complete
呼叫。此呼叫看起來類似其他
Heartbeat Ad
呼叫,但包含某些特定項目:

心率廣告完成呼叫

參數
附註
s:event:type
complete
s:asset:type
ad

前段廣告插播的程式碼範例

在此案例中,VOD 包含一個前段廣告、第二個前段廣告,然後播放內容。
  • Android
    若要在 Android 中查看此案例,請設定下列程式碼:
    // Set up mediaObject MediaObject mediaInfo = MediaHeartbeat.createMediaObject( Configuration.MEDIA_NAME, Configuration.MEDIA_ID, Configuration.MEDIA_LENGTH, MediaHeartbeat.StreamType.VOD ); HashMap<String, String> videoMetadata = new HashMap<String, String>(); videoMetadata.put(CUSTOM_KEY_1, CUSTOM_VAL_1); videoMetadata.put(CUSTOM_KEY_2, CUSTOM_VAL_2); // 1. Call trackSessionStart() when the user clicks Play or if autoplay is used, // i.e., there's an intent to start playback. _mediaHeartbeat.trackSessionStart(mediaInfo, videoMetadata); ...... ...... // Pre-roll MediaObject adBreakInfo = MediaHeartbeat.createAdBreakObject(ADBREAK_NAME, ADBREAK_POSITION, ADBREAK_START_TIME); MediaObject adInfo = MediaHeartbeat.createAdObject(AD_NAME, AD_ID, AD_POSITION, AD_LENGTH); // Context ad data HashMap<String, String> adMetadata = new HashMap<String, String>(); adMetadata.put(CUSTOM_KEY_1, CUSTOM_VAL_1); adMetadata.put(CUSTOM_KEY_2, CUSTOM_VAL_2); // 2. Track the MediaHeartbeat.Event.AdBreakStart event when the pre-roll pod starts // to play. Note that since this is a pre-roll, call must track the // "MediaHeartbeat.Event.AdBreakStart" event before you call trackPlay(). _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakStart, adBreakInfo, null); ....... ....... // 3. Track the MediaHeartbeat.Event.AdStart event when the pre-roll pod's ad starts // to play. Note that since this is a pre-roll, you must track the // "MediaHeartbeat.Event.AdStart" event before you call trackPlay(). _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdStart, adInfo, adMetadata); ....... ....... // 4. Call trackPlay() when the playback actually starts, i.e., when the first frame // of the ad video is rendered on the screen. _mediaHeartbeat.trackPlay(); ....... ....... // 5. Track the MediaHeartbeat.Event.AdComplete event when the ad reaches the end, // i.e., when the ad completes and finishes playing. _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdComplete, null, null); ....... ....... // 6. Track the MediaHeartbeat.Event.AdStart event when the pre-roll pod's second ad // starts to play. _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdStart, adInfo, adMetadata); ....... ....... // 7. Track the MediaHeartbeat.Event.AdComplete event when the second ad reaches the // end, i.e., the second ad completes and finishes playing. _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdComplete, null, null); ....... ....... // 8. Track the MediaHeartbeat.Event.AdBreakComplete event when all of the ads in the // pod finish playing. _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakComplete, null, null); ....... ....... // 9. Call trackComplete() when the playback reaches the end, i.e., when the video // completes and finishes playing. _mediaHeartbeat.trackComplete(); ........ ........ // 10. Call trackSessionEnd() when the playback session is over. This method must be // called even if the user does not watch the video to completion. _mediaHeartbeat.trackSessionEnd(); ........ ........
  • iOS -
    若要在 iOS 中查看此案例,請設定下列程式碼:
    // Set up mediaObject ADBMediaObject *mediaObject = [ADBMediaHeartbeat createMediaObjectWithName:MEDIA_NAME length:MEDIA_LENGTH streamType:ADBMediaHeartbeatStreamTypeVOD]; NSMutableDictionary *videoContextData = [[NSMutableDictionary alloc] init]; [videoContextData setObject:CUSTOM_VAL_1 forKey:CUSTOM_KEY_1]; [videoContextData 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:videoContextData]; ....... ....... // Pre-roll ADBMediaObject *adBreakInfo = [ADBMediaHeartbeat createAdBreakObjectWithName:AD_BREAK_NAME position:AD_BREAK_POSITION startTime:AD_BREAK_START_TIME]; ADBMediaObject *adInfo = [ADBMediaHeartbeat createAdObjectWithName:AD_NAME adId:AD_ID position:AD_POSITION length:AD_LENGTH]; // context ad data NSMutableDictionary *adDictionary = [[NSMutableDictionary alloc] init]; [adDictionary setObject:@"custom-val1" forKey:@"custom-key1"]; [adDictionary setObject:@"custom-val2" forKey:@"custom-key2"]; // 2. Track the ADBMediaHeartbeatEventAdBreakStart event when the pre-roll pod // starts to play. Note that since this is a pre-roll, you must track the // "ADBMediaHeartbeatEventAdBreakStart" event before you call trackPlay. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdBreakStart mediaObject:adBreakObject data:nil]; ....... ....... // 3. Track the ADBMediaHeartbeatEventAdStart event when the pre-roll pod's // ad starts to play. Note that since this is a pre-roll, you must track // the "ADBMediaHeartbeatEventAdStart" event before you call trackPlay. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdStart mediaObject:adObject data:adDictionary]; ....... ....... // 4. Call trackPlay when the playback actually starts, i.e., when the // first frame of the main content is rendered on the screen. [_mediaHeartbeat trackPlay]; ....... ....... // 5. Track the ADBMediaHeartbeatEventAdComplete event when the ad reaches // the end, i.e., when the video completes and finishes playing. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdComplete mediaObject:nil data:nil]; ....... ....... // 6. Track the ADBMediaHeartbeatEventAdStart event when the pre-roll pod's // second ad starts to play. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdStart mediaObject:adBreakObject data:nil]; ....... ....... // 7. Track the ADBMediaHeartbeatEventAdComplete event when the second ad // reaches the end, i.e., it completes and finishes playing. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdComplete mediaObject:nil data:nil]; ....... ....... // 8. Track the ADBMediaHeartbeatEventAdBreakComplete event when all the // ads in the pod finish playing. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdBreakComplete mediaObject:adBreakObject data:nil]; ....... ....... // 9. Call trackComplete when the playback reaches the end, i.e., when the // video completes and finishes playing. [_mediaHeartbeat trackComplete]; ....... ....... // 10. Call trackSessionEnd when the playback session is over. This method // must be called even if the user does not watch the video to completion. [_mediaHeartbeat trackSessionEnd]; ....... .......
  • JavaScript
    若要在 JavaScript 中檢視此案例,請輸入下列文字:
    // Set up mediaObject var mediaInfo = MediaHeartbeat.createMediaObject(Configuration.MEDIA_NAME, Configuration.MEDIA_ID, Configuration.MEDIA_LENGTH,MediaHeartbeat.StreamType.VOD); var videoMetadata = { 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, videoMetadata); ...... ...... // Preroll var adBreakInfo = MediaHeartbeat.createAdBreakObject(ADBREAK_NAME, ADBREAK_POSITION, ADBREAK_START_TIME); var adInfo = MediaHeartbeat.createAdObject(AD_NAME, AD_ID, AD_POSITION, AD_LENGTH); // Custom ad metadata var adMetadata = { CUSTOM_AD_KEY_1 : CUSTOM_AD_VAL_1, CUSTOM_AD_KEY_2 : CUSTOM_AD_VAL_2 }; // 2. Track the MediaHeartbeat.Event.AdBreakStart event when the preroll pod starts to play. // Note that since this is a preroll, track the MediaHeartbeat.Event.AdBreakStart // event before you call trackPlay(). this._mediaheartbeat.trackEvent(MediaHeartbeat.Event.AdBreakStart, adBreakInfo, null); ....... ....... // 3. Track the MediaHeartbeat.Event.AdStart event when the preroll pod's ad starts to play. // Note that since this is a preroll, track the MediaHeartbeat.Event.AdStart event before // you call trackPlay(). this._mediaheartbeat.trackEvent(MediaHeartbeat.Event.AdStart, adInfo, adMetadata); ....... ....... // 4. Call trackPlay() when the playback actually starts, i.e., the first frame of the main content is rendered on the screen. this._mediaHeartbeat.trackPlay(); ....... ....... // 5. Track event MediaHeartbeat.Event.AdComplete when the ad reaches the end, // i.e., when it completes and finishes playing. this._mediaheartbeat.trackEvent(MediaHeartbeat.Event.AdComplete); ....... ....... // 6. Track the MediaHeartbeat.Event.AdStart event when the preroll pod's second // ad starts to play. this._mediaheartbeat.trackEvent(MediaHeartbeat.Event.AdStart, adInfo, adMetadata); ....... ....... // 7. Track the MediaHeartbeat.Event.AdComplete event when the second ad reaches // the end, i.e., when it completes and finishes playing. this._mediaheartbeat.trackEvent(MediaHeartbeat.Event.AdComplete); ....... ....... // 8. Track the MediaHeartbeat.Event.AdBreakComplete event when all the ads // in the pod finish playing. this._mediaheartbeat.trackEvent(MediaHeartbeat.Event.AdBreakComplete); ....... ....... // 9. Call trackComplete() when the playback reaches the end, i.e., when it // completes and finishes playing. this._mediaHeartbeat.trackComplete(); // 10. Call trackSessionEnd() when the playback session is over. This method must // be called even if the user does not watch the video to completion. this._mediaHeartbeat.trackSessionEnd(); ....... .......

多個廣告插播的程式碼範例

在此案例中,VOD 內容的播放會是前段廣告、內容、中段廣告、內容和後段廣告。
  • Android
    若要在 Android 中查看此案例,請設定下列程式碼:
    // Set up mediaObject MediaObject mediaInfo = MediaHeartbeat.createMediaObject( Configuration.MEDIA_NAME, Configuration.MEDIA_ID, Configuration.MEDIA_LENGTH, MediaHeartbeat.StreamType.VOD ); HashMap<String, String> videoMetadata = new HashMap<String, String>(); videoMetadata.put(CUSTOM_KEY_1, CUSTOM_VAL_1); videoMetadata.put(CUSTOM_KEY_2, CUSTOM_VAL_2); // 1. Call trackSessionStart() when the user clicks Play or if autoplay is used, // i.e., there's an intent to start playback. _mediaHeartbeat.trackSessionStart(mediaInfo, videoMetadata); ...... ...... // Pre-roll MediaObject adBreakInfo = MediaHeartbeat.createAdBreakObject(ADBREAK_NAME, ADBREAK_POSITION, ADBREAK_START_TIME); MediaObject adInfo = MediaHeartbeat.createAdObject(AD_NAME, AD_ID, AD_POSITION, AD_LENGTH); // Context ad data HashMap<String, String> adMetadata = new HashMap<String, String>(); adMetadata.put(CUSTOM_KEY_1, CUSTOM_VAL_1); adMetadata.put(CUSTOM_KEY_2, CUSTOM_VAL_2); // 2. Track the MediaHeartbeat.Event.AdBreakStart event when the pre-roll pod // starts to play. Note that since this is a pre-roll, you must track the // "MediaHeartbeat.Event.AdBreakStart" event before you call trackPlay(). _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakStart, adBreakInfo, null); ....... ....... // 3. Track the MediaHeartbeat.Event.AdStart event when the pre-roll pod's ad // starts to play. Note that since this is a pre-roll, you must track the // "MediaHeartbeat.Event.AdStart" event before you call trackPlay(). _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdStart, adInfo, adMetadata); ....... ....... // 4. Call trackPlay() when the playback actually starts, i.e., when the first // frame of the main content is rendered on the screen. _mediaHeartbeat.trackPlay(); ....... ....... // 5. Track the MediaHeartbeat.Event.AdComplete event when the ad reaches the end, // i.e., when the ad completes and finishes playing. _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdComplete, null, null); ....... ....... // 6. Track the MediaHeartbeat.Event.AdBreakComplete event when all of the ads in //; the pod finish playing. _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakComplete, null, null); ....... ....... // Mid-roll MediaObject adBreakInfo = MediaHeartbeat.createAdBreakObject(mid-roll_BREAK_NAME, mid-roll_BREAK_POSITION, mid-roll_BREAK_START_TIME); MediaObject adInfo = MediaHeartbeat.createAdObject(mid-roll_AD_NAME, mid-roll_AD_ID, mid-roll_AD_POSITION, mid-roll_AD_LENGTH); // Context ad data HashMap<String, String> adMetadata = new HashMap<String, String>(); adMetadata.put(CUSTOM_KEY_1, CUSTOM_VAL_1); adMetadata.put(CUSTOM_KEY_2, CUSTOM_VAL_2); // 7. Track the MediaHeartbeat.Event.AdBreakStart event when the mid-roll pod // starts to play. _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakStart, adBreakInfo, null); ....... ....... // 8. Track the MediaHeartbeat.Event.AdStart event when the mid-roll pod's ad // starts to play. _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdStart, adInfo, adMetadata); ....... ....... // 9. Track the MediaHeartbeat.Event.AdComplete event when the ad reaches the end, // i.e., when the adcompletes and finishes playing. _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdComplete, null, null); ....... ....... // 10. Track the MediaHeartbeat.Event.AdBreakComplete event when all the ads in the // mid-roll pod finish playing. _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakComplete, null, null); ....... ....... // Post-roll MediaObject adBreakInfo = MediaHeartbeat.createAdBreakObject(POSTROLL_BREAK_NAME, POSTROLL_BREAK_POSITION, POSTROLL_BREAK_START_TIME); MediaObject adInfo = MediaHeartbeat.createAdObject(POSTROLL_AD_NAME, POSTROLL_AD_ID, POSTROLL_AD_POSITION, POSTROLL_AD_LENGTH); // Context ad data HashMap<String, String> adMetadata = new HashMap<String, String>(); adMetadata.put(CUSTOM_KEY_1, CUSTOM_VAL_1); adMetadata.put(CUSTOM_KEY_2, CUSTOM_VAL_2); // 11. Track the MediaHeartbeat.Event.AdBreakStart event when the post-roll pod // starts to play. _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakStart, adBreakInfo, null); ....... ....... // 12. Track the MediaHeartbeat.Event.AdStart event when the post-roll pod's // ad starts to play. _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdStart, adInfo, adMetadata); ....... ....... // 13. Track the MediaHeartbeat.Event.AdComplete event when the ad reaches the // end, i.e., when the ad completes and finishes playing. _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdComplete, null, null); ....... ....... // 14. Track the MediaHeartbeat.Event.AdBreakComplete event when all the ads in // the post-roll pod finish playing. _mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakComplete, null, null); ....... ....... // 15. Call trackComplete() when the playback reaches the end, i.e., when the // video completes and finishes playing. _mediaHeartbeat.trackComplete(); ........ ........ // 16. Call trackSessionEnd() when the playback session is over. This method // must be called even if the user does not watch the video to completion. _mediaHeartbeat.trackSessionEnd(); ........ ........
  • iOS
    若要在 iOS 中查看此案例,請設定下列程式碼:
    // Set up mediaObject ADBMediaObject *mediaObject = [ADBMediaHeartbeat createMediaObjectWithName:MEDIA_NAME length:MEDIA_LENGTH streamType:ADBMediaHeartbeatStreamTypeVOD]; NSMutableDictionary *videoContextData = [[NSMutableDictionary alloc] init]; [videoContextData setObject:CUSTOM_VAL_1 forKey:CUSTOM_KEY_1]; [videoContextData 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:videoContextData]; ....... ....... // Pre-roll ADBMediaObject *adBreakInfo = [ADBMediaHeartbeat createAdBreakObjectWithName:AD_BREAK_NAME position:AD_BREAK_POSITION startTime:AD_BREAK_START_TIME]; ADBMediaObject *adInfo = [ADBMediaHeartbeat createAdObjectWithName:AD_NAME adId:AD_ID position:AD_POSITION length:AD_LENGTH]; // Context ad data NSMutableDictionary *adDictionary = [[NSMutableDictionary alloc] init]; [adDictionary setObject:@"custom-val1" forKey:@"custom-key1"]; [adDictionary setObject:@"custom-val2" forKey:@"custom-key2"]; // 2. Track the ADBMediaHeartbeatEventAdBreakStart event when the // pre-roll pod starts to play. Note that since this is a pre-roll, // you must track the ADBMediaHeartbeatEventAdBreakStart event // before you call trackPlay. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdBreakStart mediaObject:adBreakObject data:adDictionary]; ....... ....... // 3. Track the ADBMediaHeartbeatEventAdStart when the pre-roll // pod's ad starts to play. Note that since this is a pre-roll, // you must track the ADBMediaHeartbeatEventAdStart before you // call trackPlay. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdStart mediaObject:adObject data:adDictionary]; ....... ....... // 4. Call trackPlay when the playback actually starts, i.e., when // the first frame of the main content is rendered on the screen. [_mediaHeartbeat trackPlay]; ....... ....... // 5. Track the ADBMediaHeartbeatEventAdComplete event when the ad // reaches the end, i.e., when it completes and finishes playing. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdComplete mediaObject:nil data:nil]; ....... ....... // 6. Track the ADBMediaHeartbeatEventAdBreakComplete event when all // of the ads in the pod finish playing. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdBreakComplete mediaObject:nil data:nil]; ....... ....... // Mid-roll ADBMediaObject *adBreakInfo = [ADBMediaHeartbeat createAdBreakObjectWithName:MIDROLL_BREAK_NAME position:MIDROLL_BREAK_POSITION startTime:MIDROLL_BREAK_START_TIME]; ADBMediaObject *adInfo = [ADBMediaHeartbeat createAdObjectWithName:MIDROLL_AD_NAME adId:MIDROLL_AD_ID position:MIDROLL_AD_POSITION length:MIDROLL_AD_LENGTH]; // context ad data NSMutableDictionary *midrollAdDictionary = [[NSMutableDictionary alloc] init]; [midrollAdDictionary setObject:@"custom-val1" forKey:@"custom-key1"]; [midrollAdDictionary setObject:@"custom-val2" forKey:@"custom-key2"]; // 7. Track the ADBMediaHeartbeatEventAdBreakStart event when the mid-roll pod // starts to play. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdBreakStart mediaObject:adBreakObject data:nil]; ....... ....... // 8. Track the ADBMediaHeartbeatEventAdStart event when the mid-roll pod's // ad starts to play. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdStart mediaObject:adObject data:midrollAdDictionary]; ....... ....... // 9. Track the ADBMediaHeartbeatEventAdComplete event when the ad reaches // the end, i.e., when it completes and finishes playing. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdComplete mediaObject:nil data:nil]; ....... ....... // 10. Track the ADBMediaHeartbeatEventAdBreakComplete event when all the // ads in the mid-roll pod finish playing. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdBreakComplete mediaObject:nil data:nil]; ....... ....... // Post-roll ADBMediaObject *postrollBreakInfo = [ADBMediaHeartbeat createAdBreakObjectWithName:POSTROLL_BREAK_NAME position:POSTROLL_BREAK_POSITION startTime:POSTROLL_BREAK_START_TIME]; ADBMediaObject *adInfo = [ADBMediaHeartbeat createAdObjectWithName:POSTROLL_AD_NAME adId:POSTROLL_AD_ID position:POSTROLL_AD_POSITION length:POSTROLL_AD_LENGTH]; // Context ad data NSMutableDictionary *postrollAdDictionary = [[NSMutableDictionary alloc] init]; [postrollAdDictionary setObject:@"custom-val1" forKey:@"custom-key1"]; [postrollAdDictionary setObject:@"custom-val2" forKey:@"custom-key2"]; // 11. Track the ADBMediaHeartbeatEventAdBreakStart event when the // post-roll pod starts to play. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdBreakStart mediaObject:adBreakObject data:nil]; ....... ....... // 12. Track the ADBMediaHeartbeatEventAdStart event when the // post-roll pod's ad starts to play. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdStart mediaObject:adObject data:postrollAdDictionary]; ....... ....... // 13. Track the ADBMediaHeartbeatEventAdComplete event when the // post-roll pod's ad finishes playing. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdComplete mediaObject:nil data:nil]; ....... ....... // 14. Track the ADBMediaHeartbeatEventAdBreakComplete event when // all the ads in the post-roll pod finish playing. [_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventAdBreakComplete mediaObject:nil data:nil]; ....... ....... // 15. Call trackComplete when the playback reaches the end, // i.e., when the video completes and finishes playing. [_mediaHeartbeat trackComplete]; ....... ....... // 16. Call trackSessionEnd when the playback session is over. This method // must be called even if the user does not watch the video to completion. [_mediaHeartbeat trackSessionEnd]; ....... .......
  • JavaScript
    若要在 JavaScript 中檢視此案例,請輸入下列文字:
    // Set up mediaObject MediaObject mediaInfo = MediaHeartbeat.createMediaObject( Configuration.MEDIA_NAME, Configuration.MEDIA_ID, Configuration.MEDIA_LENGTH, MediaHeartbeat.StreamType.VOD ); var videoMetadata = { CUSTOM_KEY_1 : CUSTOM_VAL_1, CUSTOM_KEY_2 : CUSTOM_VAL_2, CUSTOM_KEY_3 : CUSTOM_VAL_ }; // 1. Call trackSessionStart() when Play is clicked or if autoplay is used, // i.e., when there's an intent to start playback. this._mediaHeartbeat.trackSessionStart(mediaInfo, videoMetadata); ...... ...... // Preroll var adBreakInfo = MediaHeartbeat.createAdBreakObject(ADBREAK_NAME, ADBREAK_POSITION, ADBREAK_START_TIME); var adInfo = MediaHeartbeat.createAdObject(AD_NAME, AD_ID, AD_POSITION, AD_LENGTH); // Custom ad metadata var adMetadata = { CUSTOM_KEY_1 : CUSTOM_VAL_1, CUSTOM_KEY_2 : CUSTOM_VAL_2 }; // 2. Track the MediaHeartbeat.Event.AdBreakStart event when the preroll pod // starts to play. Note that since this is a preroll, you must track the // MediaHeartbeat.Event.AdBreakStart event before you call trackPlay(). this._trackEvent(MediaHeartbeat.Event.AdBreakStart, adBreakInfo, null); ....... ....... // 3. Track the MediaHeartbeat.Event.AdStart event when the preroll pod's ad // starts to play. Note that since this is a preroll, you must track the // MediaHeartbeat.Event.AdStart event before you call trackPlay(). this._heartbeat.trackEvent(MediaHeartbeat.Event.AdStart, adInfo, adMetadata); ....... ....... // 4. Call trackPlay() when the main content actually starts, i.e., when the // first frame of the video content is rendered on the screen. this._mediaHeartbeat.trackPlay(); ....... ....... // 5. Track the MediaHeartbeat.Event.AdComplete event when the ad reaches the end, // i.e., when the ad completes and finishes playing. this._heartbeat.trackEvent(MediaHeartbeat.Event.AdComplete, null, null); ....... ....... // 6. Track the MediaHeartbeat.Event.AdBreakComplete event when all of the ads in // the pod finish playing. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakComplete); ....... ....... // Midroll var adBreakInfo = MediaHeartbeat.createAdBreakObject(MIDROLL_BREAK_NAME, MIDROLL_BREAK_POSITION, MIDROLL_BREAK_START_TIME); var adInfo = MediaHeartbeat.createAdObject(MIDROLL_AD_NAME, MIDROLL_AD_ID, MIDROLL_AD_POSITION, MIDROLL_AD_LENGTH); // Custom ad metadata var adMetadata = { CUSTOM_KEY_1 : CUSTOM_VAL_1, CUSTOM_KEY_2 : CUSTOM_VAL_2 }; // 7. Track the MediaHeartbeat.Event.AdBreakStart event when the // midroll pod starts to play. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakStart, adBreakInfo); ....... ....... // 8. Track the MediaHeartbeat.Event.AdStart event when the midroll // pod's ad starts to play. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdStart, adInfo, adMetadata); ....... ....... // 9. Track the MediaHeartbeat.Event.AdComplete event when the ad // reaches the end, i.e., when the ad completes and finishes playing. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdComplete); ....... ....... // 10. Track the MediaHeartbeat.Event.AdBreakComplete event when all of // the ads in the midroll pod finish playing. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakComplete); ....... ....... // Set up mediaObject var mediaInfo = MediaHeartbeat.createMediaObject( Configuration.MEDIA_NAME, Configuration.MEDIA_ID, Configuration.MEDIA_LENGTH, MediaHeartbeat.StreamType.VOD ); var videoMetadata = { 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., when there's an intent to start playback. this._mediaHeartbeat.trackSessionStart(mediaInfo, videoMetadata); ...... ...... // Preroll var adBreakInfo = MediaHeartbeat.createAdBreakObject(ADBREAK_NAME, ADBREAK_POSITION, ADBREAK_START_TIME); var adInfo = MediaHeartbeat.createAdObject(AD_NAME, AD_ID, AD_POSITION, AD_LENGTH); // Custom ad metadata var adMetadata = { CUSTOM_KEY_1 : CUSTOM_VAL_1, CUSTOM_KEY_2 : CUSTOM_VAL_2 }; // 2. Track the MediaHeartbeat.Event.AdBreakStart event when the preroll pod // starts to play. Note that since this is a preroll, you must track the // MediaHeartbeat.Event.AdBreakStart event before you call trackPlay(). this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakStart, adBreakInfo); ....... ....... // 3. Track the MediaHeartbeat.Event.AdStart event when the preroll pod's // ad starts to play. Note that since this is a preroll, you must track // the MediaHeartbeat.Event.AdStart event before you call trackPlay(). this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdStart, adInfo, adMetadata); ....... ....... // 4. Call trackPlay() when the playback actually starts, i.e., when the first // frame of the main content is rendered on the screen. _mediaHeartbeat.trackPlay(); ....... ....... // 5. Track the MediaHeartbeat.Event.AdComplete event when the ad reaches // the end, i.e., when the ad completes and finishes playing. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdComplete); ....... ....... // 6. Track the MediaHeartbeat.Event.AdBreakComplete event when all // of the ads in the pod finish playing. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakComplete); ....... ....... // Mid-roll var adBreakInfo = MediaHeartbeat.createAdBreakObject(MIDROLL_BREAK_NAME, MIDROLL_BREAK_POSITION, MIDROLL_BREAK_START_TIME); var adInfo = MediaHeartbeat.createAdObject(MIDROLL_AD_NAME, MIDROLL_AD_ID, MIDROLL_AD_POSITION, MIDROLL_AD_LENGTH); // Custom ad metadata var adMetadata = { CUSTOM_KEY_1 : CUSTOM_VAL_1, CUSTOM_KEY_2 : CUSTOM_VAL_2 }; // 7. Track the MediaHeartbeat.Event.AdBreakStart event when the midroll // pod starts to play. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakStart, adBreakInfo); ....... ....... // 8. Track the MediaHeartbeat.Event.AdStart event when the midroll pod's // ad starts to play. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdStart, adInfo, adMetadata); ....... ....... // 9. Track the MediaHeartbeat.Event.AdComplete event when the ad reaches // the end, i.e., when the ad completes and finishes playing. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdComplete); ....... ....... // 10. Track the MediaHeartbeat.Event.AdBreakComplete event when all // of the ads in the midroll pod finish playing. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakComplete); ....... ....... // Postroll var adBreakInfo = MediaHeartbeat.createAdBreakObject(POSTROLL_BREAK_NAME, POSTROLL_BREAK_POSITION, POSTROLL_BREAK_START_TIME); var adInfo = MediaHeartbeat.createAdObject(POSTROLL_AD_NAME, POSTROLL_AD_ID, POSTROLL_AD_POSITION, POSTROLL_AD_LENGTH); // Custom ad metadata var adMetadata = { CUSTOM_KEY_1 : CUSTOM_VAL_1, CUSTOM_KEY_2 : CUSTOM_VAL_2 }; // 11. Track the MediaHeartbeat.Event.AdBreakStart event when the postroll // pod starts to play. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakStart, adBreakInfo); ....... ....... // 12. Track the MediaHeartbeat.Event.AdStart event when the postroll pod's ad // starts to play. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdStart, adInfo, adMetadata); ....... ....... // 13. Track the MediaHeartbeat.Event.AdComplete event when the ad reaches // the end, i.e., when the ad completes and finishes playing. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdComplete); ....... ....... // 14. Track the MediaHeartbeat.Event.AdBreakComplete event when all of // the ads in the postroll pod finish playing. this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakComplete); ....... ....... // 15. Call trackComplete() when the playback reaches the end, i.e., when playback // completes and finishes playing. this._mediaHeartbeat.trackComplete(); ........ ........ // 16. Call trackSessionEnd() when the playback session is over. This method must be called // even if the user does not watch the video to completion. this._mediaHeartbeat.trackSessionEnd(); ........ ........