프리롤 광고가 있는 VOD 재생 vod-playback-with-pre-roll-ads

이 시나리오에서는 주 콘텐츠 앞에 프리롤 광고가 삽입되었습니다. 명시하지 않은 경우, 네트워크 호출은 광고 없이 VOD 재생 시나리오의 호출과 동일합니다. 네트워크 호출은 동시에 발생하지만 페이로드가 다릅니다.

트리거
하트비트 메서드
네트워크 호출
참고
사용자가 재생 클릭
trackSessionStart
Analytics 콘텐츠 시작, 하트비트 콘텐츠 시작
측정 라이브러리는 프리롤 광고가 있는지 모르므로, 이러한 네트워크 호출은 광고 없이 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

매개 변수 parameters

광고 재생이 시작되면 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
<광고 pod ID>

광고 재생이 Heartbeat Content Complete 호출과 마찬가지로 완료되고 플레이헤드의 끝에 도달하면 Heartbeat Ad Complete 호출이 전송됩니다. 이 호출은 다른 Heartbeat Ad 호출과 비슷하게 보이지만 다음 두 가지 특정 항목을 포함합니다.

하트비트 광고 완료 호출

매개 변수
참고
s:event:type
complete
s:asset:type
ad

프리롤 광고 브레이크용 샘플 코드 sample-code-for-a-pre-roll-ad-break

이 시나리오에서 VOD는 첫 번째 프리롤 광고, 두 번째 프리롤 광고로 구성된 다음 콘텐츠가 재생됩니다.

  • Android Android에서 이 시나리오를 보려면 다음 코드를 설정합니다.

    code language-java
    // 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에서 이 시나리오를 보려면 다음 코드를 설정합니다.

    code language-none
    //  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에서 이 시나리오를 보려면 다음 텍스트를 입력합니다.

    code language-js
    // 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();
    
    .......
    .......
    

여러 광고 브레이크용 샘플 코드 sample-code-for-multiple-ad-breaks

이 시나리오에서 VOD 콘텐츠는 프리롤 광고, 콘텐츠, 미드롤 광고, 콘텐츠 및 포스트롤 광고로 재생됩니다.

  • Android Android에서 이 시나리오를 보려면 다음 코드를 설정합니다.

    code language-java
    // 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에서 이 시나리오를 보려면 다음 코드를 설정합니다.

    code language-none
    //  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에서 이 시나리오를 보려면 다음 텍스트를 입력합니다.

    code language-js
    // 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();
    
    ........
    ........
    
recommendation-more-help
c8eee520-cef5-4f8c-a38a-d4952cfae4eb