กระดุมแป๊ก

ในฐานะผู้เผยแพร่โฆษณาวิดีโอ คุณอาจต้องการป้องกันไม่ให้ผู้ชมดูผ่านโฆษณาตอนกลางของคุณ เมื่อผู้ใช้เลื่อนผ่านช่วงพักโฆษณาไปแล้ว คุณสามารถนำผู้ใช้กลับไปยังจุดเริ่มต้นของช่วงพักโฆษณาได้ จากนั้นจึงนำผู้ใช้กลับไปยังตำแหน่งเดิมหลังจากช่วงพักโฆษณาสิ้นสุดลง คุณลักษณะนี้เรียกว่า "snapback"

ดูตัวอย่างแผนภาพด้านล่าง ผู้ชมของคุณกำลังดูวิดีโอ และตัดสินใจจากช่วง 5 นาทีไปยัน 15 นาที อย่างไรก็ตาม จะมีช่วงพักโฆษณาเมื่อครบ 10 นาทีที่คุณต้องการให้พวกเขาดูก่อนจึงจะดูเนื้อหาหลังจากนั้นได้

หากต้องการแสดงช่วงพักโฆษณานี้ โปรดทำตามขั้นตอนต่อไปนี้

  1. ตรวจสอบว่าผู้ใช้ทำการค้นหาผ่านช่วงพักโฆษณาที่ไม่ได้ดูหรือไม่ และถ้าเป็นเช่นนั้น ให้พาผู้ใช้กลับไปที่ช่วงพักโฆษณา
  2. หลังจากช่วงพักโฆษณาสิ้นสุดแล้ว ให้กลับไปยังหน้าเดิม

ในแบบฟอร์มแผนภาพ จะมีลักษณะดังนี้

วิธีใช้เวิร์กโฟลว์นี้ใน IMA SDK ของ Roku ดังที่แสดงในตัวอย่างขั้นสูง

ป้องกันไม่ให้ผู้ใช้หยุดดูช่วงพักโฆษณา

ตรวจสอบว่าผู้ใช้ทำการค้นหาที่เลยช่วงพักโฆษณาที่ไม่ได้ดูไปหรือไม่ และถ้ามี ให้นำผู้ใช้กลับไปยังช่วงพักโฆษณา ตัวอย่างขั้นสูงของ Roku จะใช้การกดปุ่มระยะไกลเพื่อให้ผู้ใช้กรอวิดีโอ แต่ละครั้งที่ผู้ใช้กดปุ่มไปข้างหน้า ผู้ใช้จะข้ามไปข้างหน้าในสตรีมตามจำนวนวินาทีที่กำหนดไว้ วิธีการเดียวกันกับที่จัดการการข้ามนี้ยังจะตรวจสอบเพื่อดูว่าการข้ามผ่านหรือเข้าสู่ช่วงพักโฆษณาหรือไม่ด้วย และจะนำผู้ใช้ไปยังจุดเริ่มต้นของช่วงพักโฆษณาแทน ดังนี้

Function handleFastForward(player as Object, streamManager as Object, updatedTime As Integer)
  previousAd = streamManager.getPreviousCuePoint(updatedTime)
  If previousAd = Invalid or previousAd.hasPlayed
    player.seek(updatedTime * 1000)
  Else If previousAd.start > player.currentTime
    player.isSnapback = True
    player.timeAfterSnapback = updatedTime
    player.seek(previousAd.start * 1000 + 1000)
  End If
End Function

นำผู้ใช้กลับไปยังการค้นหาเดิม

ในเครื่องจัดการ adBreakEnded ให้ตรวจสอบว่ามีการเล่นช่วงพักโฆษณาก่อนหน้าอันเป็นผลมาจาก Snapback หรือไม่ หากใช่ ให้นำผู้ใช้กลับไปยังตำแหน่งที่ต้องการในตอนแรก (ตราบใดที่ไม่อยู่ระหว่างช่วงพักโฆษณาที่เพิ่งเล่น)

player.adBreakEnded = Function(adBreakInfo as Object)
  If m.isSnapback
    m.seek(m.timeAfterSnapback * 1000)
    m.isSnapback = False
  End If
End Function