قبعة سناباك

بصفتك ناشر فيديو، ننصحك بمنع المشاهدين من البحث عن إعلانات أثناء التشغيل. عندما يتجاوز المستخدم الفاصل الإعلاني، يمكنك إعادته إلى بداية الفاصل الإعلاني، ثم إعادته إلى موضع البحث بعد انتهاء الفاصل الإعلاني. تسمى هذه الميزة "snapback".

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

لعرض هذا الفاصل الإعلاني، يُرجى اتّباع الخطوات التالية:

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

في شكل رسم تخطيطي، يبدو ذلك هكذا:

في ما يلي طريقة تنفيذ سير العمل هذا في حزمة تطوير البرامج لإعلانات الوسائط التفاعلية لنظام 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، تحقَّق لمعرفة ما إذا كان قد تم تشغيل الفاصل الإعلاني السابق كنتيجةٍ لمعاودة الاتصال. إذا كان الأمر كذلك، يمكنك إعادة المستخدم إلى الموضع الذي كان يحاول الوصول إليه في البداية (طالما أنه لم يكن في منتصف الفاصل الإعلاني الذي تم تشغيله للتو):

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