건너뛴 챕터가 있는 VOD 재생 vod-playback-with-a-skipped-chapter

시나리오 scenario

이 시나리오에서는 사용자가 주 콘텐츠의 챕터를 건너뜁니다.

이 시나리오는 사용자가 챕터를 찾으려고 하므로 건너뛰고 주 콘텐츠로 이동한다는 것을 제외하면 한 개의 챕터가 있는 VOD 재생 시나리오와 동일합니다.

트리거
하트비트 메서드
네트워크 호출
참고
사용자가 재생 클릭
trackSessionStart
Analytics 콘텐츠 시작, 하트비트 콘텐츠 시작
측정 라이브러리는 프리롤 광고가 있다는 것을 인식하지 못합니다. 이러한 네트워크 호출은 iOS에서 중단 없이 재생 시나리오와 동일합니다.
챕터가 시작됨.
trackEvent:ChapterStart
하트비트 챕터 시작
챕터의 첫 번째 프레임이 재생됩니다.
trackPlay
하트비트 챕터 재생
챕터 콘텐츠가 주 콘텐츠 전에 재생되면 챕터가 시작될 때 하트비트를 시작하려고 합니다.
챕터가 재생됩니다.
챕터 하트비트
찾기는 첫 번째 챕터를 건너뛰기 시작합니다.
trackEvent:trackSeekStart
찾는 동안 하트비트 없음
찾기가 완료되었습니다.
trackEvent:trackSeekComplete
하트비트가 이 게시를 다시 시작합니다.
애플리케이션은 사용자가 일반 챕터 경계서 찾은 것을 인식합니다.
trackEvent:trackChapterSkip
콘텐츠가 재생됩니다.
콘텐츠 하트비트
콘텐츠 재생이 완료됨.
trackComplete
하트비트 콘텐츠 완료
이 네트워크 호출은 iOS에서 중단 없이 재생 시나리오와 동일합니다.
세션이 끝남.
trackSessionEnd
SessionEnd는 보고 있는 세션의 종료를 의미합니다. 이 API는 사용자가 미디어를 끝까지 시청하지 않은 경우에도 호출해야 합니다.

매개 변수 parameters

챕터 재생 중에 사용된 매개 변수는 챕터 전체 네트워크 호출이 없다는 점을 제외하고 한 개의 챕터가 있는 VOD 재생 시나리오의 매개 변수와 동일합니다.

샘플 코드 sample-code

Android

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

// Set up mediaObject
MediaObject mediaInfo = MediaHeartbeat.createMediaObject(
  Configuration.MEDIA_NAME,
  Configuration.MEDIA_ID,
  Configuration.MEDIA_LENGTH,
  MediaHeartbeat.StreamType.VOD

);

HashMap<String, String> mediaMetadata = new HashMap<String, String>();
mediaMetadata.put(CUSTOM_KEY_1, CUSTOM_VAL_1);
mediaMetadata.put(CUSTOM_KEY_2, CUSTOM_VAL_2);

// 1. Call trackSessionStart() when the user clicks Play or if autoplay is used,
//    i.e., there is an intent to start playback.
_mediaHeartbeat.trackSessionStart(mediaInfo, mediaMetadata);

......
......

// Chapter
HashMap<String, String> chapterMetadata = new HashMap<String, String>();
chapterMetadata.put(CUSTOM_KEY_1, CUSTOM_VAL_1);
MediaObject chapterDataInfo =
MediaHeartbeat.createChapterObject(CHAPTER_NAME,
                                   CHAPTER_POSITION,
                                   CHAPTER_LENGTH,
                                   CHAPTER_START_TIME);

// 2. Track the MediaHeartbeat.Event.ChapterStart event when the chapter starts to play.
_mediaHeartbeat.trackEvent(MediaHeartbeat.Event.ChapterStart,
                         chapterDataInfo,
                         chapterMetadata);

.......
.......

// 3. Call trackPlay() when the playback actually starts, i.e., when the first frame
//    of the main content is rendered on the screen.
_mediaHeartbeat.trackPlay();

.......
.......

// 4. Track the MediaHeartbeat.Event.SeekStart event when the user begins to seek out
//    of the chapter with the intent to skip it.
_mediaHeartbeat.trackEvent(MediaHeartbeat.Event.SeekStart, null, null);

.......
.......

// 5. Track the MediaHeartbeat.Event.SeekComplete event when the user seeks out of the
//    chapter with the intent to skip it.
_mediaHeartbeat.trackEvent(MediaHeartbeat.Event.SeekComplete, null, null);

.......
.......

// 6. Track the MediaHeartbeat.Event.ChapterSkip event because the user skipped the
//    chapter by seeking out of it in the steps above.
_mediaHeartbeat.trackEvent(MediaHeartbeat.Event.ChapterSkip, null, null);

.......
.......

// 7. Call trackComplete() when the playback reaches the end, i.e., when the media
//    completes and finishes playing.
_mediaHeartbeat.trackComplete();

........

........

// 8. Call trackSessionEnd() when the playback session is over. This method must be
//    called even if the user does not watch the media to completion.
_mediaHeartbeat.trackSessionEnd();

........
........

iOS

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

// Set up mediaObject
ADBMediaObject *mediaObject =
[ADBMediaHeartbeat createMediaObjectWithName:MEDIA_NAME
                   length:MEDIA_LENGTH
                   streamType:ADBMediaHeartbeatStreamTypeVOD];

NSMutableDictionary *mediaContextData = [[NSMutableDictionary alloc] init];
[mediaContextData setObject:CUSTOM_VAL_1 forKey:CUSTOM_KEY_1];
[mediaContextData setObject:CUSTOM_VAL_2 forKey:CUSTOM_KEY_2];

// 1. Call trackSessionStart when the user clicks Play or if autoplay is used,
//    i.e., there's an intent to start playback.
[_mediaHeartbeat trackSessionStart:mediaObject data:mediaContextData];
.......
.......

// Chapter
NSMutableDictionary *chapterContextData = [[NSMutableDictionary alloc] init];
[chapterContextData setObject:CONTEXT_DATA_VALUE forKey:CONTEXT_DATA_KEY];

id chapterInfo =
[ADBMediaHeartbeat createChapterObjectWithName:CHAPTER_NAME
                   position:CHAPTER_POSITION
                   length:CHAPTER_LENGTH
                   startTime:CHAPTER_START_TIME];

// 2. Track the ADBMediaHeartbeatEventChapterStart event when the chapter starts.
[_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventChapterStart
               mediaObject:chapterInfo
               data:chapterContextData];
.......
.......

// 3. Call trackPlay when the playback actually starts, i.e., when the first
//    frame of the main content is rendered on the screen.
[_mediaHeartbeat trackPlay];
.......
.......

// 4. Track the trackEvent:ADBMediaHeartbeatEventSeekStart event when the user
//    begins to seek out of the chapter with the intent to skip it.
[_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventSeekStart mediaObject:nil data:nil];
.......
.......

// 5. Track the trackEvent:ADBMediaHeartbeatEventSeekComplete event when the
//    user seeks out of the chapter with the intent to skip it.
[_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventSeekComplete mediaObject:nil data:nil];
.......
.......

// 6. Track the trackEvent:ADBMediaHeartbeatEventChapterSkip event because the
//    user skipped the chapter by seeking out of it in the steps above.
[_mediaHeartbeat trackEvent:ADBMediaHeartbeatEventChapterSkip
               mediaObject:chapterInfo
               data:chapterContextData];
.......
.......

// 7. Call trackComplete when the playback reaches the end, i.e., when the media
//    completes and finishes playing.
[_mediaHeartbeat trackComplete];
.......
.......

// 8. Call trackSessionEnd when the playback session is over. This method must
//    be called even if the user does not watch the media to completion.
[_mediaHeartbeat trackSessionEnd];
.......
.......

JavaScript

JavaScript에서 이 시나리오를 보려면 다음 텍스트를 입력하십시오.

// Set up mediaObject
var mediaInfo = MediaHeartbeat.createMediaObject(
  Configuration.MEDIA_NAME,
  Configuration.MEDIA_ID,
  Configuration.MEDIA_LENGTH,
  MediaHeartbeat.StreamType.VOD
);

var mediaMetadata = {
  CUSTOM_KEY_1 : CUSTOM_VAL_1,
  CUSTOM_KEY_2 : CUSTOM_VAL_2,
  CUSTOM_KEY_3 : CUSTOM_VAL_3

};

// 1. Call trackSessionStart() when Play is clicked or if autoplay is used,
//    i.e., there's an intent to start playback.
this._mediaHeartbeat.trackSessionStart(mediaInfo, mediaMetadata);

......
......

// Chapter
var chapterMetadata = {
  CUSTOM_KEY_1 : CUSTOM_VAL_1
};

var chapterDataInfo =
MediaHeartbeat.createChapterObject(CHAPTER_NAME,
                                  CHAPTER_POSITION,
                                  CHAPTER_LENGTH,
                                  CHAPTER_START_TIME);

// 2. Track the MediaHeartbeat.Event.ChapterStart event when the chapter starts to play.
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.ChapterStart,
                              chapterDataInfo,
                              chapterMetadata);

.......
.......

// 3. Call trackPlay() when the playback actually starts, i.e., when the
//    first frame of the main content is rendered on the screen.
this._mediaHeartbeat.trackPlay();

.......
.......

// 4. Track the MediaHeartbeat.Event.SeekStart event when the user begins
//    to seek out of the chapter with the intent to skip it.
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.SeekStart);

.......
.......

// 5. Track the MediaHeartbeat.Event.SeekComplete event when the user seeks
//    out of the chapter with the intent to skip it.
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.SeekComplete);

.......
.......

// 6. Track the MediaHeartbeat.Event.ChapterSkip event because the user
//    skipped the chapter by seeking out of it in the steps above.
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.ChapterSkip);

.......
.......

// 7. Call trackComplete() when the playback reaches the end, i.e., completes
//    and finishes playing.
this._mediaHeartbeat.trackComplete();

........
........

// 8. Call trackSessionEnd() when the playback session is over. This method must be
//    called even if the user does not watch the media to completion.
this._mediaHeartbeat.trackSessionEnd();

........
........
recommendation-more-help
c8eee520-cef5-4f8c-a38a-d4952cfae4eb