ในฐานะผู้เผยแพร่วิดีโอ คุณอาจต้องการป้องกันไม่ให้ผู้ชมดูโฆษณาตอนกลางของคุณจนจบ เมื่อผู้ใช้ค้นหาช่วงพักโฆษณาแล้ว คุณจะนำผู้ใช้กลับไปยังจุดเริ่มต้นของช่วงพักโฆษณานั้นและกลับไปยังตำแหน่งที่ผู้ใช้ค้นหาหลังจากช่วงพักโฆษณาสิ้นสุดลงได้ ฟีเจอร์นี้เรียกว่า "snapback"
ดูตัวอย่างได้จากแผนภาพด้านล่าง ผู้ดูกำลังดูวิดีโอ และตัดสินใจกรอวิดีโอตั้งแต่ 5 นาทีถึง 15 นาที อย่างไรก็ตาม ระบบจะแสดงช่วงพักโฆษณาที่ช่วง 10 นาทีที่คุณต้องการให้ผู้ใช้เห็นก่อนที่ผู้ใช้จะดูเนื้อหาได้หลังจากนั้น
หากต้องการแสดงช่วงพักโฆษณานี้ ให้ทำตามขั้นตอนต่อไปนี้
- ตรวจสอบว่าผู้ใช้ทำการค้นหาผ่านช่วงพักโฆษณาที่ไม่ได้ดูหรือไม่ และหากเป็นเช่นนั้น ให้พาผู้ใช้กลับไปที่ช่วงพักโฆษณา
- หลังจากช่วงพักโฆษณาเสร็จสมบูรณ์แล้ว ให้กลับไปยังการค้นหาเดิม
ในรูปแบบแผนภาพ จะมีลักษณะดังนี้
ต่อไปนี้คือวิธีการใช้เวิร์กโฟลว์นี้ใน IMA DAI SDK ดังที่เสร็จสิ้นใน AdvancedExample
ป้องกันไม่ให้ผู้ใช้หยุดดูช่วงพักโฆษณา
ตรวจสอบว่าผู้ใช้ได้ทำการค้นหาผ่านช่วงพักโฆษณาที่ยังไม่ได้ดูไปหรือไม่
และหากมี ให้นำผู้ใช้กลับไปยังช่วงพักโฆษณา
ใน Android SDK ให้ใช้ออบเจ็กต์ PlayerControl
เพื่อตรวจหาการกรอวิดีโอ
เมื่อผู้ใช้ค้นหา ให้ทริกเกอร์เมธอด onSeek()
ของ SampleHlsVideoPlayerCallback
ที่ SampleAdsWrapper
นำไปใช้
วิธีการดังกล่าว (ดังที่แสดงด้านล่าง) จะตรวจสอบจุดเริ่มโฆษณาก่อนเวลาที่ผู้ใช้ขอ หากยังไม่เล่น ให้ไปยังจุดเริ่มต้นของช่วงพักโฆษณานั้นแทนจุดเริ่มที่ต้องการ แล้วบันทึกจุดเรียกดูที่ต้องการใน snapBackTime
@Override
public void onSeek(int timeMillis) {
double timeToSeek = timeMillis;
if (streamManager != null) {
CuePoint cuePoint =
streamManager.getPreviousCuePointForStreamTime(timeMillis / 1000);
if (cuePoint != null && !cuePoint.isPlayed()) {
snapBackTime = timeToSeek / 1000.0; // Update snapback time.
// Missed cue point, so snap back to the beginning of cue point.
timeToSeek = cuePoint.getStartTime() * 1000;
videoPlayer.seek(Math.round(timeToSeek));
videoPlayer.setCanSeek(false);
return;
}
}
videoPlayer.seek(Math.round(timeToSeek));
}
นำผู้ใช้กลับไปยังการค้นหาเดิม
ตอนนี้เมื่อได้รับเหตุการณ์ onAdBreakEnded
ให้ตรวจดูว่ามีการตั้งค่า snapBackTime
หรือไม่ หากใช่ ให้นำผู้ใช้ไปยังจุดนั้นในสตรีม เพราะช่วงพักโฆษณาที่เพิ่งดูเป็นผลมาจาก Snapback
@Override
public void onAdBreakEnded() {
// Re-enable player controls.
videoPlayer.setCanSeek(true);
videoPlayer.enableControls(true);
if (snapBackTime > 0) {
videoPlayer.seek(Math.round(snapBackTime * 1000));
}
snapBackTime = 0;
}