الرجوع إلى فاصل إعلاني تم تخطّيه

اختيار النظام الأساسي: HTML5 Android iOS tvOS Roku

بصفتك ناشر فيديوهات، قد تريد منع المشاهدين من تخطّي "الإعلانات أثناء التشغيل". عندما يتخطّى المستخدم فاصلًا إعلانيًا، يمكنك إعادته إلى بداية هذا الفاصل، ثم إعادته إلى موضع التقديم السريع بعد انتهاء الفاصل. تُعرف هذه الميزة باسم "العودة إلى الإعلان".

اطّلِع على الرسم البياني أدناه كمثال. يشاهد المستخدم فيديو ويقرّر الانتقال من الدقيقة 5 إلى الدقيقة 15. ومع ذلك، هناك فاصل إعلاني عند الدقيقة 10 يجب أن يشاهده المستخدمون قبل أن يتمكّنوا من مشاهدة المحتوى بعده:

لعرض فاصل إعلاني، اتّبِع الخطوات التالية:

  1. تحقَّق مما إذا كان المستخدم قد نفّذ عملية بحث تجاوزت فاصل إعلاني لم تتم مشاهدته، وإذا كان الأمر كذلك، أعِد توجيهه إلى الفاصل الإعلاني.
  2. بعد انتهاء فاصل الإعلانات، أعِد المستخدمين إلى موضع البحث الأصلي.

في شكل رسم بياني، يبدو ذلك على النحو التالي:

في ما يلي كيفية تنفيذ ميزة "العودة إلى الإعلان" باستخدام حزمة IMA DAI SDK، كما هو موضّح في المثال المتقدّم.

منع التقديم السريع من تخطّي فاصل إعلاني بدون مشاهدته

تحقَّق مما إذا كان المستخدم قد نفّذ عملية بحث تجاوزت فاصل إعلاني لم تتم مشاهدته، وإذا كان الأمر كذلك، أعِد توجيهه إلى الفاصل الإعلاني. في حزمة تطوير البرامج (SDK) بتنسيق HTML5، اضبط متتبِّع الأحداث على حدث seeked في مشغّل المحتوى لتشغيل onSeekEnd(). تتحقّق هذه الطريقة (الموضّحة أدناه) من نقطة عرض أحداث قبل وقت البحث الذي يحدّده المستخدم. إذا لم يتم تشغيلها، انتقِل إلى بداية فاصل الإعلانات بدلاً من نقطة الانتقال المطلوبة الأولية، واحفظ نقطة الانتقال المطلوبة هذه في snapForwardTime.

function onSeekEnd() {
  if (isLiveStream) { return; }
  if (isSnapback) {
    isSnapback = false;
    return;
  }
  var currentTime = videoElement.currentTime;
  var previousCuePoint =
      streamManager.previousCuePointForStreamTime(currentTime);
  if (previousCuePoint && !previousCuePoint.played) {
    isSnapback = true;
    snapForwardTime = currentTime;
    videoElement.currentTime = previousCuePoint.start;
}

إعادة المستخدم إلى موضع البحث الأصلي

الآن، عندما تتلقّى حدث AD_BREAK_ENDED، تحقَّق مما إذا تم ضبط snapForwardTime. إذا كان الأمر كذلك، يجب نقل المستخدم إلى تلك النقطة في البث، لأنّ الفاصل الإعلاني الذي شاهده للتو كان نتيجة ميزة "العودة إلى الإعلان":

function onAdBreakEnded(e) {
  videoElement.controls = true;
  clickElement.style.display = 'none';
  adUiDiv.style.display = 'none';
  if (snapForwardTime && snapForwardTime > videoElement.currentTime) {
    videoElement.currentTime = snapForwardTime;
    snapForwardTime = null;
  }
}