بصفتك ناشر فيديو، ننصحك بمنع المشاهدين من البحث عن إعلاناتك أثناء التشغيل. عندما يتجاوز المستخدم فاصلاً إعلانيًا، يمكنك إعادته إلى بداية الفاصل الإعلاني، ثم إعادته إلى موضع البحث بعد اكتمال الفاصل الإعلاني. تُسمى هذه الميزة "Snapback".
كمثال، انظر الرسم التخطيطي أدناه. يشاهد المشاهد مقطع فيديو، ويقرر الانتقال من علامة 5 دقائق إلى علامة 15 دقيقة. مع ذلك، يكون هناك فاصل إعلاني عند انتهاء الـ 10 دقائق تريد من المشاهدين مشاهدته قبل أن يتمكّنوا من مشاهدة المحتوى بعده:
لعرض هذا الفاصل الإعلاني، اتّبِع الخطوات التالية:
- تحقَّق مما إذا كان المستخدم ينفّذ طلب بحث يتجاوز الفاصل الإعلاني الذي لم تتم مشاهدته، وإذا كان الأمر كذلك، عليك إعادة عرضه إلى الفاصل الإعلاني.
- بعد اكتمال الفاصل الإعلاني، إعادته إلى موضعه الأصلي.
في شكل رسم تخطيطي، يبدو هذا:
في ما يلي كيفية تنفيذ Snapack باستخدام حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية، كما هو موضّح في المثال المتقدّم.
منع التقديم/الترجيع من ترك فاصل إعلاني بدون مشاهدة
تحقَّق مما إذا كان المستخدم قد أجرى عملية بحث تجاوزت فاصلاً إعلانيًا لم تتم مشاهدته، وإذا كان الأمر كذلك، أعِد عرضه إلى الفاصل الإعلاني. تعتمد عيّنة 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