包含前置广告的 VOD 播放

在此方案中,在主内容之前插入了前置广告。除非另外指定,否则网络调用与不含广告的 VOD 播放方案中的调用相同。网络调用在同一时间发生,但负载却不同。

触发器 心率方法 网络调用 注释
用户点击播放 trackSessionStart Analytics 内容开始,心率内容开始 测量库不知道存在一个前置广告,因此这些网络调用仍然与不含广告的 VOD 播放方案相同。
广告开始。
  • trackEvent:AdBreakStart
  • trackEvent:AdStart
Analytics 广告开始、心率广告开始
播放广告 #1 的帧。 trackPlay 心率广告播放 广告内容在主内容之前播放,心率在广告开始时开始。
播放广告。 广告心率
广告 #2 结束播放。 trackEvent:trackAdComplete 心率广告结束 到达广告的结尾。
播放广告 2 的第一帧。 trackEvent:AdStart Analytics 广告开始、心率广告开始
播放广告。 广告心率
广告 #2 结束播放。
  • trackEvent:trackAdComplete
  • trackEvent:AdBreakComplete
心率广告结束 到达广告和面板的结尾。
播放内容。 内容心率 此网络调用与不含广告的 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 <广告 ID>
s:asset:pod_id <广告面板 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(); 
    
    ........ 
    ........ 
    

在此页面上