نظرة عامة
توفِّر حزمة تطوير البرامج (SDK) استلام الويب دعمًا أصليًا للفواصل الإعلانية والإعلانات المصاحبة.
ضمن بث وسائط معيّن فهي توفر واجهات برمجة تطبيقات لضبط متوسط موضع الإعلان ومصدره
الفواصل الإعلانية ومقاطع الفيديو المرتبطة بها وسلوكها في هذا الدليل،
Break
تشير إلى فاصل تشغيل يحتوي على إعلان أو ملصق صغير واحد أو أكثر
يُشار إلى كل إعلان أو ملصق صغير على أنه
BreakClip
ترتبط هذه الفواصل بالوسائط التي يتم تحميلها أو تشغيلها.
أنواع الإعلانات
إنّ "حزمة تطوير البرامج (SDK) لاستقبال الويب" توفّر إمكانية إدراج الإعلانات من جهة العميل (CSAI) والخادم. إدراج إعلان مدمج (SSAI). يمكن ضبط الإعلانات المجمَّعة العميل يدويًا من خلال أو استخراجه من ملفات نموذج VAST وVMAP. يجب تحديد الإعلانات المستندة إلى الخادم يدويًا قبل تحميل المحتوى مضمّن أو ديناميكيًا أثناء تشغيل المحتوى كـ مضمّن وموسَّع الإعلانات. في ما يلي وصف تفصيلي لعمليات التنفيذ لكل نوع من أنواع الإعلانات هذه.
دمج يدوي من العميل
الفاصل الإعلاني اليدوي المدمج مع العميل هو نوع من الفواصل الإعلانية التي يتم دمجها.
معًا بواسطة العميل ويتم تحديدها يدويًا بواسطة التطبيق باستخدام
واجهات برمجة التطبيقات لحزمة تطوير البرامج (SDK). هذا النوع من الإعلانات غير مضمّن في تدفق المحتوى الرئيسي. تشير رسالة الأشكال البيانية
على "BreakClip
" تقديم
contentId
وهو عنوان URL يشير إلى محتوى الإعلان
contentType
ووصف شكل محتوى الإعلان
title
.
يجب أن يتضمّن Break
isEmbedded
أو
expanded
تم تعيينها إلى القيمة الافتراضية false
. تشير رسالة الأشكال البيانية
position
يمكن ضبطه على فاصل إعلاني إعلان ما قبل التشغيل أو إعلان أثناء التشغيل أو إعلان ما بعد التشغيل (يمكنك الاطّلاع على مزيد من المعلومات في
تقسيم تحديد الموضع). عند إعداد
إعلان لتشغيله، تُنشئ حزمة تطوير البرامج (SDK) لجهاز الويب الإضافي مثيل مشغِّل آخر لتحميله
وتشغيل محتوى الإعلان تتطلّب هذه الفواصل stitched timeline
ويجب أن تكون
تمت إضافتها ثابتًا (يمكنك الاطّلاع على مزيد من المعلومات في
إدراج الإعلانات). يوضح النموذج أدناه أساسيات
تنفيذ إعلان من إنشاء العميل:
// Create the BreakClip.
let clipClient = new cast.framework.messages.BreakClip('bc_client');
clipClient.title = 'The Ad Title to be displayed during playback';
clipClient.contentId = 'https://example.com/ad.m3u8';
clipClient.contentType = 'application/vnd.apple.mpegurl';
// Optional: Used when HLS ad container formats differ from the main content's.
clipClient.hlsSegmentFormat = cast.framework.messages.HlsSegmentFormat.FMP4;
// Create the Break using the BreakClip id above.
let breakPostrollClient = new cast.framework.messages.Break(
'break_postroll_client', ['bc_client'], -1);
breakPostrollClient.isEmbedded = false; // Optional: default is false.
breakPostrollClient.expanded = false; // Optional: default is false.
VAST
تتيح حزمة تطوير البرامج (SDK) لاستقبال الويب إضافة VAST العادي الخاص بـ IAB (عرض إعلانات الفيديو). النماذج). وعند توفيره، يتم تحليل نموذج XML لإنشاء مقطع فاصل مدمج العميل عند الدخول إلى الفاصل.
لإنشاء إعلان VAST، يجب أن يُنشئ تطبيق المُستلِم
VastAdsRequest
وتحديده في BreakClip
vastAdsRequest
الموقع. يجب أن يحتوي كائن VastAdsRequest
إما على adsResponse
(
سلسلة تمثيلية لنموذج XML نفسه) أو adTagUrl
(عنوان URL
حيث تتم استضافة نموذج XML). إذا تم تحديد عنوان URL،
ستتولى حزمة SDK استرجاع النموذج. يلي أحرف Break
المغلفة
الاصطلاحات للإعلانات المجمّعة من قِبل العميل. يمكن إضافة هذه الإعلانات مع إعلانات أخرى
يدويًا تضمين العميل في الفواصل نفسها أو في فواصل منفصلة
نفس الجزء من المحتوى. يوضح المثال أدناه التنفيذ الأساسي لنموذج عرض إعلانات فيديو (VAST)
الإعلان:
// Create the VastAdsRequest.
let vastTemplate = new cast.framework.messages.VastAdsRequest();
vastTemplate.adTagUrl = 'https://example.com/ads.xml'
// Create the BreakClip.
let clipVast = new cast.framework.messages.BreakClip('bc_vast');
clipVast.vastAdsRequest = vastTemplate;
// Create the Break using the BreakClip id above.
let breakPostrollVast = new cast.framework.messages.Break(
'break_postroll_vast', ['bc_vast'], -1);
breakPostrollVast.isEmbedded = false; // Optional: default is false.
breakPostrollVast.expanded = false; // Optional: default is false.
عند إدخال Break
يحتوي على VAST BreakClip
، يبدأ مستقبل الويب
ستجلب حزمة تطوير البرامج (SDK) النموذج، ثم تحلّله بشكل اختياري. أثناء التحليل، يمكن لحزمة SDK
ستؤدي إلى إنشاء BreakClip
جديدة وتعبئتها بالقيم المستخرجة من
النموذج مثل contentId
وcontentType
وtitle
وduration
whenSkippable
، وclickThroughUrl
. إنّ id
للمقطع الذي تم إنشاؤه للفاصل هو
يتم ضبطه على GENERATED:N
حيث يكون N
عددًا صحيحًا يزيد بمقدار 1
لكل قيمة جديدة.
تم إنشاء مقطع فاصل VAST بدءًا من 0
. بعد ذلك، تتم إضافة الإعلان الذي تم إنشاؤه إلى
مصفوفة BreakClip
. قيمة id
لكل مقطع فاصل VAST في Break
الحالي هو
ثم استبداله بالمقطع الفاصل المقابل الذي تم إنشاؤه للفاصل id
. المقتطفات
لتوضيح التغييرات في
MEDIA_STATUS
الرسائل المتعلقة بالإعلانات قبل دخول هذه الفاصل الإعلاني وبعده.
معلومات Break
وBreakClip
قبل إدخال فاصل إعلاني باستخدام إعلانات VAST.
"breaks": [
{
"id": "break_postroll_vast",
"breakClipIds": [
"bc_vast"
],
"position": 0,
"isWatched": false
}
],
"breakClips": [
{
"id": "bc_vast"
}
]
معلومات Break
وBreakClip
بعد إدخال فاصل إعلاني باستخدام إعلانات VAST.
"breaks": [
{
"id": "break_postroll_vast",
"breakClipIds": [
"GENERATED:0"
],
"position": 0,
"isWatched": true
}
],
"breakClips": [
{
"id": "bc_vast"
},
{
"id": "GENERATED:0",
"contentId": "https://example.com/break-clip-1.mpd",
"contentType": "application/dash+xml",
"title": "Ad Title Extracted from Template",
"duration": 10,
"whenSkippable": 5,
"clickThroughUrl": "https://example.com/ad-target"
}
]
عرض إعلانات الفيديو (VMAP)
إنّ حزمة تطوير البرامج (SDK) لاستقبال الويب تتيح قوائم تشغيل إعلانات الفيديو المتعددة لمكتب IAB.
القياسية. عند توفير VMAP، ستحلل حزمة SDK استلام الويب ملف VMAP
الاستجابة وإنشاء كائنات Break
مدمجة من العميل لأي <AdBreak>
الإدخالات في الرد. وستُنشئ أيضًا السمة BreakClips
المناسبة باستخدام
عنصر vastAdsRequest
لكل إدخال <AdSource>
يتم تقديمه في VMAP. إلى
لتمكين VMAP من إدراج الإعلانات في المحتوى، يجب أن ينشئ التطبيق
VastAdsRequest
وتعيينه إلى
vmapAdsRequest
خاصية
MediaInformation
في
LoadRequestData
.
يجب إدراج هذه الإعلانات بشكل ثابت (يمكنك الاطّلاع على المزيد في
إدراج الإعلانات). وفي ما يلي مقتطف يوضح
إنشاء طلب VMAP.
// Create the VastAdsRequest.
let vastTemplate = new cast.framework.messages.VastAdsRequest();
vastTemplate.adTagUrl = 'https://example.com/vmap.xml'
// Add it to the MediaInformation of the LoadRequest.
loadRequestData.media.vmapAdsRequest = vastTemplate;
مضمّنة
الفاصل الإعلاني المضمّن هو نوع من الفواصل الإعلانية يتم تضمينها من جهة الخادم.
في البث المباشر للمحتوى الرئيسي. تم طرح مدة Break
.
من مدة المحتوى الرئيسي عند احتساب وقت الوسائط.
يجب أن توفّر "BreakClip
"
duration
لمحتوى الإعلان،
title
يجب أن يتضمّن Break
isEmbedded
تم الضبط على true
expanded
تم الضبط على false
. تشير رسالة الأشكال البيانية
position
يمكن ضبطه على فاصل إعلاني ما قبل التشغيل أو إعلان أثناء التشغيل. الفواصل الإعلانية ما بعد التشغيل هي
مدعومة بقيم position
دقيقة موجبة. يمكنك الاطّلاع على مزيد من المعلومات حول هذا الموضوع في
تحديد موضع فاصل. عندما يتم عرض الإعلان
تعمل حزمة أدوات استقبال الويب على الويب لتشغيل البث المباشر في شكل شرائح
المضمنة فيه. لا تتوفّر آلية تحميل إضافية لنوع الإعلان هذا.
تظهر البيانات الوصفية ذات الصلة للإعلان للمستخدم بعد أن يدخل رأس التشغيل ضمن
النطاق الزمني للفاصل. تتطلّب هذه الفواصل embedded timeline
ويجب إضافتها.
ثابتًا (اطّلِع على مزيد من المعلومات في قسم إدراج الإعلانات). تشير رسالة الأشكال البيانية
يعرض النموذج التالي تنفيذًا أساسيًا لإعلان embedded
.
// Create the BreakClip.
let clipEmbedded = new cast.framework.messages.BreakClip('bc_embedded');
clipEmbedded.title = 'The Ad Title to be displayed during playback';
clipEmbedded.duration = 15;
// Create the Break using the BreakClip id above.
let breakPrerollEmbedded = new cast.framework.messages.Break(
'break_preroll_embedded', ['bc_embedded'], 0);
breakPrerollEmbedded.isEmbedded = true;
breakPrerollEmbedded.expanded = false; // Optional: default is false.
تضمين موسّع
الفاصل الإعلاني الموسّع المضمّن هو نوع من الفواصل الإعلانية التي يتم دمجها في الخادم.
بجانب تدفق المحتوى الرئيسي. يتم تضمين مدة Break
.
في مدة المحتوى الرئيسي عند احتساب وقت الوسائط.
يجب أن توفّر "BreakClip
"
duration
لمحتوى الإعلان،
title
يجب أن يتضمّن Break
isEmbedded
تم الضبط على true
expanded
تم الضبط على true
تشير رسالة الأشكال البيانية
position
يمكن ضبطه على فاصل إعلاني ما قبل التشغيل أو إعلان أثناء التشغيل. الفواصل الإعلانية ما بعد التشغيل هي
مدعومة بقيم position
موجبة. يمكنك الاطّلاع على مزيد من المعلومات حول هذا الموضوع في
تحديد موضع فاصل. عندما يتم عرض الإعلان
تعمل حزمة أدوات استقبال الويب على الويب لتشغيل البث المباشر في شكل شرائح
المضمنة فيه. لا تتوفّر آلية تحميل إضافية لنوع الإعلان هذا.
تظهر البيانات الوصفية ذات الصلة للإعلان للمستخدم بعد أن يدخل رأس التشغيل ضمن
النطاق الزمني للفاصل. تتطلّب هذه الفواصل embedded timeline
ويمكن إضافتها
إما ثابتًا أو ديناميكيًا (يمكنك الاطّلاع على المزيد في
إدراج الإعلانات). يوضح النموذج أدناه أساسيات
تنفيذ إعلان embedded expanded
:
// Create the BreakClip.
let clipEmbeddedExpanded =
new cast.framework.messages.BreakClip('bc_embedded_expanded');
clipEmbeddedExpanded.title = 'The Ad Title to be displayed during playback';
clipEmbeddedExpanded.duration = 15;
// Create the Break using the BreakClip id above.
let breakPrerollEmbeddedExpanded = new cast.framework.messages.Break(
'break_preroll_embedded_expanded', ['bc_embedded_expanded'], 0);
breakPrerollEmbeddedExpanded.isEmbedded = true;
breakPrerollEmbeddedExpanded.expanded = true;
أنواع المخطط الزمني للّاعب
عند إنشاء مثيل مشغِّل، تحدد حزمة تطوير برامج الويب لجهاز الاستقبال نوع مخطط زمني
دعم تشغيل الإعلانات أثناء تشغيل المحتوى. يتيح كل مخطط زمني عرض إعلانات محددة
أنواع الفواصل التي ستتم إضافتها. يتم تحديد نوع المخطط الزمني من خلال
أنواع الإعلانات المتوفرة أثناء وقت التحميل في
MediaInformation
من
LoadRequestData
في حال توفُّر فواصل إعلانية مضمّنة، يتم اختيار المخطط الزمني embedded
. في حال حذف
وجود فواصل إعلانية مدمجة مع العميل، وتم اختيار المخطط الزمني لـ stitched
.
في حال عدم عرض أي إعلانات، تستخدم حزمة تطوير البرامج (SDK) تلقائيًا السمة embedded
الجدول الزمني. بمجرد تحديد المخطط الزمني، لا يمكن تغييره بالنسبة إلى الجدول الزمني
ملف وسائط. يقدم الجدول أدناه وصفًا تفصيليًا لكل مخطط زمني.
نوع المخطط الزمني | الوصف |
---|---|
المخطط الزمني المضمّن | تمثيل لوقت الوسائط الذي يتيح عرض الإعلانات وتكون مضمّنة في المحتوى الرئيسي (الفواصل الإعلانية المضمّنة والموسّعة المضمّنة). عند وجود فاصل إعلاني غير موسّع، تكون المدة حيث يتم طرحه من المدة الإجمالية المحتوى. من ناحية أخرى، عند إنشاء إعلان موسّع هناك استراحة، فإن وقتها يعتبر جزءًا من المحتوى الرئيسي. |
مخطط زمني مجمّع | تمثيل لوقت الوسائط الذي يدعم الإعلانات التي يتم الحصول عليها من ملفات وسائط خارجية (تم دمجه يدويًا وVAST وVMAP الفواصل الإعلانية). عند إضافة الفاصل الإعلاني، تكون مدة الفاصل الإعلاني وليس جزءًا من مدة المحتوى الرئيسي. |
توضّح الأشكال من 1 إلى 3 أدناه بعض المحتوى الذي يتضمن أنواع إعلانات متنوعة قيم الجدول الزمني المعنية. يتم ضبط المحتوى مع فاصل إعلان ما قبل التشغيل. تضمين مقطعَين فواصل فاصلة وفواصل إعلان أثناء التشغيل وإعلان ما بعد التشغيل مقطع فاصل فردي. وقت الساعة الجدارية منذ بداية تشغيل المحتوى، وقت الوسائط للمحتوى الرئيسي، ووقت الفاصل حاليًا تتم محاذاة مقطع الفاصل أثناء التشغيل أسفل كل شكل.
موضع الفاصل
تسمح حزمة Web لجهاز SDK للمطوّرين بتحديد أماكن الفواصل الإعلانية.
عن طريق تحديد
position
الخاصة بـ Break
. تتوافق هذه القيمة مع وقت وسائط المحتوى الرئيسي
ويمكن استخدامها لإنشاء فواصل إعلانية تشمل pre-roll
وmid-roll
وpost-roll
.
ويتم تعريفها على النحو التالي:
موضع الفاصل | الوصف |
---|---|
إعلان ما قبل التشغيل | فاصل إعلاني يتم تشغيله قبل المحتوى الرئيسي. هذا هو
تتم الإشارة إليها بتعيين breakPosition على 0 |
إعلان أثناء التشغيل | فاصل إعلاني يتم تشغيله أثناء المحتوى. يشار إليها بالرمز
ضبط breakPosition على الوقت الذي يتم فيه عرض الفاصل الإعلاني
البداية أكبر من بداية المحتوى الرئيسي،
وقت انتهاء الفاصل الإعلاني أقل من وقت انتهاء المحتوى الرئيسي.
الوقت. |
إعلان ما بعد التشغيل | فاصل إعلاني يتم تشغيله بعد المحتوى الرئيسي. هذا هو
تتم الإشارة إليها بتعيين breakPosition على -1
مخططات زمنية مركّبة بالنسبة إلى الترميز المضمَّنة
المخططات الزمنية breakPosition
على مدة المحتوى الرئيسي المطروحة من خلال
لمدة الفاصل. ولا يمكن استخدامها مع المحتوى المباشر. |
مصفوفة إمكانية التشغيل التفاعلي
كنقطة مرجعية سريعة، يعرض الجدول 1 نظرة عامة على أنواع الإعلانات توافقها مع الميزات المتعلّقة بالإعلانات
دعم الميزات | إعلان يدوي من إنشاء العميل | VAST | عرض إعلانات الفيديو (VMAP) | إعلان مضمّن | إعلان موسّع مضمّن |
---|---|---|---|---|---|
متوافقة مع | VAST | دمج يدوي من العميل | لا ينطبق | تضمين موسّع | مضمّنة |
المخطط الزمني | مخيَّط | مخيَّط | مخيَّط | مضمّنة | مضمّنة |
إدراج إعلان | ثابتة | ثابتة | ثابتة | ثابتة | ثابت، ديناميكي |
إزالة الإعلان | |||||
إعلان ما قبل التشغيل | |||||
إعلان أثناء التشغيل | |||||
إعلان ما بعد التشغيل | |||||
تخطّي الإعلان | |||||
اعتراض محاولة الكسر | |||||
أداة اعتراض تحميل المقطع |
فعاليات
عند وقوع أحداث الفواصل الرئيسية، ترسل حزمة تطوير البرامج (SDK) للبث الأحداث من النوع.
BreaksEvent
يمكن لتطبيق مستلِم الاشتراك في هذه الأجهزة باستخدام PlayerManager
addEventListener
واجهة برمجة التطبيقات.
ويمكن استخدام هذه الأحداث في الإحصاءات وتتبُّع تشغيل الإعلانات. عند ضبط VMAP إعلانات (قائمة تشغيل إعلانات الفيديو المتعددة) وإعلانات VAST (نموذج عرض إعلانات الفيديو) هي مستخدمة، فإن أي أحداث تتبع قياسية مقدَّمة في الردود يتم تلقائيًا ترسلها حزمة SDK.
يتم إدراج أنواع الأحداث في الجدول 2 مع وصف تفصيلي على عند فصلهم من العمل.
حدث استراحة | الوصف |
---|---|
BREAK_STARTED |
يتم تنشيطها عندما يكون وقت الوسائط الحالي للمحتوى الرئيسي يساوي
position من استراحة لم تتم مشاهدتها. |
BREAK_CLIP_LOADING |
يتم تنشيطه فقط عند بدء تحميل مقطع يوقف المخطط الزمني المُدمَج. |
BREAK_CLIP_STARTED |
يتم تشغيله عند بدء تشغيل مقطع فاصل. |
BREAK_CLIP_ENDED |
يتم الإطلاق عند انتهاء مقطع فاصل. تشير رسالة الأشكال البيانية
endedReason
ستتم ملؤها في الحالات التالية:
|
BREAK_ENDED |
يتم إطلاقه عند انتهاء آخر مقطع فاصل إعلاني. |
إدراج إعلان
تُتيح حزمة تطوير البرامج (SDK) الخاصة بالإرسال للتطبيقات إمكانية إدراج الإعلانات وإزالتها في أوقات مختلفة
من جلسة البث. نوعا إدراج الإعلان هما ثابت وديناميكي.
يتطلّب إدراج الإعلان الثابت تحديد الإعلانات في
LoadRequestData
قبل إنشاء اللاعب. يستفيد إدراج الإعلانات الديناميكية من
BreakManager
addBreak
واجهة برمجة التطبيقات لإدراج فواصل في المحتوى الذي سبق تحميله. كل نوع من أنواع الإدراج
متوافقًا مع بعض أنواع الإعلانات. التوافق
في مصفوفة إمكانية التشغيل التفاعلي.
إدراج إعلان ثابت
يتميز إدراج الإعلان الثابت بإضافة البيانات الوصفية ذات الصلة للإعلان قبل
إلى إنشاء اللاعبين. يتم توفير هذه المعلومات في
MediaInformation
من LoadRequestData
. على سبيل المثال، يمكن ضبط هذا الإجراء في مرسِل متصل
طلب التحميل الأصلي أو إدراجه من خلال تطبيق WebRecipient عن طريق
اعتراض طلب "LOAD
". بعد إرجاع LoadRequestData
إلى
حزمة SDK لاستقبال الويب للمعالجة، يتم إنشاء المشغِّل. الاطّلاع على المزيد على
جارٍ تحميل الوسائط. العيّنة
أدناه إعلانًا من إنشاء العميل تتم إضافته إلى طلب LOAD
يدويًا.
اعتراضية.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, loadRequestData => {
// Create the BreakClip.
let clipClient = new cast.framework.messages.BreakClip('bc_client');
clipClient.title = 'The Ad Title to be displayed during playback';
clipClient.contentId = 'https://example.com/ad.mp4';
clipClient.contentType = 'video/mp4';
// Create the Break using the BreakClip id above.
let breakPostrollClient = new cast.framework.messages.Break(
'break_postroll_client', ['bc_client'], -1);
// Set the ad information in the load request data.
let media = loadRequestData.media;
media.breakClips = [clipClient];
media.breaks = [breakPostrollClient];
return loadRequestData;
});
إدراج إعلان ديناميكي
يتّصف الإدراج الديناميكي للإعلانات بضبط فاصل إعلاني أثناء عرض المحتوى
التشغيل. ويتم ذلك من خلال الحصول على نسخة افتراضية من BreakManager
وإجراء الاتصال
الـ
addBreak
واجهة برمجة التطبيقات. يتطلب هذا معلمين على الأقل،
إعلان موسّع
Break
و
صفيف من
BreakClip
يتم تضمين خاصية ثالثة اختيارية لفرض إرسال التغييرات إلى
المرسلون المتصلون من خلال بث MediaStatus
عند الضبط على true
. فعندما
إضافة فواصل وفواصل، يجب أن تكون أرقام التعريف المقابلة فريدة. هذه الإعلانات
يمكن إضافتها فقط بعد إنشاء المشغّل. تنشيط حزمة تطوير البرامج (SDK) لمستلِم الويب
الـ
PLAYER_LOADING
الحدث بمجرد إنشاء المشغّل. شاهد النموذج أدناه الذي يعرض الاستخدام في
معالج أحداث يستجيب للتغييرات في البيانات الوصفية ذات رقم التعريف 3 (ID3) لمجموعة البث
ينشئ العنصرَين Break
وBreakClip
لإدراجه في المخطط الزمني.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();
playerManager.addEventListener(cast.framework.events.EventType.ID3, (event) => {
// Create the BreakClip.
let clipEmbeddedExpanded = parseBreakClipFromData(event.segmentData);
let breakEmbeddedExpanded = parseExpandedBreakFromData(event.segmentData);
// Add the break and break clip.
breakManager.addBreak(breakEmbeddedExpanded, [clipEmbeddedExpanded]);
});
إزالة الإعلان الديناميكي
لإزالة الفواصل الديناميكية، يجب أن يطلب التطبيق
removeBreakById
أثناء التشغيل. تستخدم الدالة معرّف سلسلة للفاصل ليكون
من الجدول الزمني. يجب أن تشير السمة breakId
المحددة إلى تضمين
فاصل إعلاني موسّع. إذا تم رصد أي نوع آخر من الفواصل الإعلانية، يتم إنشاء الفاصل
ستظل في الجدول الزمني. راجِع النموذج أدناه الذي يؤدي إلى إزالة الفاصل الإعلاني.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();
breakManager.removeBreakById('break_midroll_embedded_expanded');
طريقة عمل الفواصل
تحدّد حزمة تطوير البرامج (SDK) سلوكًا تلقائيًا عند دخول اللاعب للفواصل أو مغادرتها.
وتوفّر طريقة لتخصيصها بشكل أكبر باستخدام بعض واجهات برمجة التطبيقات المتوفرة
بوصة
BreakManager
سلوك الفواصل الإعلانية التلقائية
عند إدخال Break
أثناء تشغيل محتوى عادي أو من خلال التقديم/الترجيع على Break
،
ستقيّم حزمة SDK ما إذا كان المستخدم قد سبق وشاهدها من خلال التحقّق من
الـ
isWatched
الموقع. وعند إنشاء الفاصل الإعلاني، تكون القيمة التلقائية لهذه السمة هي false
. في حال حذف
الخاصية هي true
، ولن يتم تشغيل الفاصل عند الدخول إليه بشكل رئيسي.
سيستمر تشغيل المحتوى. إذا كانت السمة false
، ستكون الفاصل الإعلاني كما يلي:
يتم تشغيلها عند إدخالها.
عند البحث عن فواصل إعلانية سابقة، تحصل طريقة التنفيذ التلقائية على جميع Break
العناصر التي يكون position
فيها بين عمليات البحث
seekFrom
أو
seekTo
القيم. من قائمة الفواصل هذه، ستشغِّل حزمة تطوير البرامج (SDK) ملف Break
الذي يتضمّن position
.
الأقرب إلى قيمة seekTo
والتي تم ضبط خاصية isWatched
فيها على
false
سيتم بعد ذلك ضبط السمة isWatched
لهذا الفاصل على true
وسيتم ضبط
في تشغيل مقاطع الاستراحة. وبمجرد مشاهدة الفاصل،
سيتم استئناف تشغيل المحتوى الرئيسي من الموضع seekTo
. إذا لم يكن كذلك
توجد استراحة، فلن يتم تشغيل أي فاصل وسيتم استئناف المحتوى الرئيسي
يتم تشغيله في الموضع seekTo
.
أثناء تشغيل الاستراحة، ستبث حزمة تطوير البرامج (SDK) أي تحديثات ذات صلة إلى الأجهزة المتصلة
تطبيقات المرسل في
MediaStatus
ستستخدم هذه التطبيقات عمليات البث لتحديث واجهة المستخدم للإعلانات من خلال القراءة
الـ
breakStatus
الموقع. يتمّ تحديد هذه السمة فقط أثناء تشغيل الفاصل الإعلاني.
كما يمكن لتطبيقات المستلمين الاستعلام مباشرةً عن المعلومات المتعلقة
موضع رأس التشغيل بالنسبة إلى الوقت الحالي لـ BreakClip
يظهر من خلال طلب الرقم PlayerManager
getBreakClipCurrentTimeSec
وبالمثل، يمكن للتطبيقات الاستعلام عن مدة BreakClip
الحالية من خلال
يتصل
getBreakClipDurationSec
سلوك الفواصل الإعلانية المخصّصة
السلوك التلقائي
للاستراحات ومقاطع يمكن تعديلها باستخدام
setBreakClipLoadInterceptor
أو
setBreakSeekInterceptor
الطرق المقدمة في BreakManager
.
كسر محاولة اعتراض الكرة
يتيح وضع اعتراض محاولة الكسر للتطبيق التحكم في سلوك التقديم/الترجيع
فوق الفواصل الإعلانية يتم تشغيل الدالة عند طلب عملية بحث
يجري الانتقال للأمام أو للخلف خلال فاصل واحد أو أكثر. عند استدعائها،
BreakSeekData
يتم تمريره كمعلمة إلى دالة رد الاتصال. الكائن BreakSeekData
يحتوي على صفيف من
Break
تم ضبط الخاصية position
الخاصة بها على رقم بين القيمة الحالية
وقت رأس التشغيل المحدد على أنه
seekFrom
ووقت الوصول إلى الوجهة
seekTo
يسمح عنصر الاعتراض هذا بتصحيح الكائنات في الفواصل الإعلانية المناسبة للحقل "Break
".
تم تعديله. عند تنفيذ الفاصل، يجب أن يحدد عنصر اعتراض محاولة الفاصل الإعلان
يتوقف عن التشغيل عن طريق عرض عنصر BreakSeekData
تم تعديله اختياريًا. تشير رسالة الأشكال البيانية
سيواصل اللاعب تشغيل كل الفواصل المضمَّنة في القيمة المعروضة. إذا كانت القيمة
null
أو لا يتم إرجاع أي شيء من اعتراض محاولة الكسر، فإن الكسر هو
تم تخطيه.
انظر النموذج أدناه لمعرفة طريقة تنفيذ بسيطة لنظام الاعتراض الذي تلغي الإعدادات التلقائية لمشاهدة كل الفواصل الإعلانية التي تم البحث عنها باستخدام باستثناء الفواصل التي سبقت مشاهدتها.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();
breakManager.setBreakSeekInterceptor((breakSeekData) => {
// Filter the breaks array by removing watched breaks.
const unwatchedBreaks =
breakSeekData.breaks.filter(adBreak => !adBreak.isWatched);
breakSeekData.breaks = unwatchedBreaks;
return breakSeekData;
});
كسر اعتراض تحميل المقطع
باستخدام أداة اعتراض تحميل مقطع الفاصل، يمكن تعديل الكائن BreakClip
.
قبل بدء تشغيله.
يتم طلب اعتراض تحميل مقطع الفاصل فقط
فواصل مرتّبة بالمخطط الزمني
ويمكن ضبطها باستخدام
setBreakClipLoadInterceptor
قبل الدخول إلى Break
، يتم طلب الاعتراض مرة واحدة لكل فرد.
تم تحديد BreakClip
في هذا الفاصل. تجتاز حزمة SDK حزمة SDK الأصلية
BreakClip
كمعلمة لدالة الاستدعاء. يمكن للتطبيق بعد ذلك تعديل
هذا BreakClip
وإرجاعه كي تتمكّن حزمة تطوير البرامج (SDK) من جلب الفاصل وعرضه.
مقطع بإعدادات محدثة. في حال إرجاع null
أو عدم إرجاع أي عنصر، يتم استخدام الفاصل
تم تخطي مقطع.
اطّلِع أدناه على مثال يعدِّل contentUrl
من المقاطع الفاصلة باستخدام
تستدعي دالة الأداة getUrlFromClipId
حيث يكون id
لـ BreakClip
إلى عنوان URL.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();
breakManager.setBreakClipLoadInterceptor(
(breakClip, breakClipLoadInterceptorContext) => {
// Obtains the URL of a break clip id from a function call.
breakClip.contentUrl = getUrlFromClipId(breakClip.id);
return breakClip;
});
تخطي الإعلان
توفّر "حزمة تطوير البرامج (SDK) استلام الويب" واجهات برمجة تطبيقات لتخطّي الفواصل الإعلانية ومقاطع الفواصل الإعلانية الفردية. ضمن فاصل إعلاني تسمح حزمة تطوير البرامج (SDK) أيضًا للمستخدمين بتخطّي مقاطع الفواصل بشكل اختياري من خلال تتفاعل مع تطبيقات المرسل أو أجهزة الشاشة الذكية.
مقاطع الفواصل التي يمكن للمستخدم تخطيها
إنّ ضبط مقاطع الفواصل كمقاطع قابلة للتخطّي يسمح للمستخدمين بالتفاعل مع المُرسِل المرتبط.
وتطبيقات وأجهزة العرض الذكية لتخطي بقية
مقطع فاصل قيد التشغيل حاليًا إعداد
whenSkippable
إلى عدد غير سالب من الثواني إلى تفعيل هذه الميزة
الكائن BreakClip
. سيعتبر المشغّل أن مقطع الفاصل قابل للتخطي بعد
تم تشغيل مقطع "الفاصل" خلال هذا العدد من الثواني. جارٍ ضبط هذه القيمة على 0
يتيح للمستخدمين تخطّي مقطع الفاصل على الفور.
// Create the BreakClip.
let clip = new cast.framework.messages.BreakClip('bc');
clip.title = 'The Ad Title to be displayed during playback';
clip.whenSkippable = 10; // Users can skip the clip after 10 seconds of playback.
يمكن تعيين هذه المعلومات في طلب التحميل الأصلي للمرسل أو في تطبيق الاستقبال. عند تخطّي هذا الخيار، يتم عرض مقطع فاصل ضمن فاصل إعلاني مدمج. سيتوقف تشغيل مقطع الفاصل الحالي. سيقوم المشغل إما بتحميل مقطع فيديو إذا كان متوفرًا أو تحميل المحتوى الرئيسي. عند التخطي، يتم عرض مقطع استراحة في سيصل الفاصل الإعلاني إلى نهاية مقطع الفاصل في المخطط الزمني المضمّن مواصلة تشغيل البث عند هذه النقطة
تخطّي الإعلانات آليًا
يمكن أيضًا تخطّي الإعلانات تلقائيًا بدون أي تفاعل من المستخدم.
لتخطّي فترة استراحة كاملة من التشغيل، يجب أن يضبط التطبيق
isWatched
من Break
إلى true
. يمكن إجراء ذلك في أي وقت أثناء تحميل البيانات.
التسلسل أو تشغيل المحتوى. يتم تقييم السمة isWatched
من خلال
المستخدم عند استيفاء قيمة position
للاستراحة في الوقت الحالي للمحتوى الرئيسي. علامة @
من هذه النقطة، سيحدد اللاعب ما إذا كان يجب إدخال فاصل أم لا.
اطّلِع على العيّنة أدناه التي تعرض كل الفواصل وتُعدّل
القيمة عند تحميل المشغّل.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();
playerManager.addEventListener(cast.framework.events.EventType.PLAYER_LOADING,
(event) => {
// Obtain the breaks and iterate through each item to skip all ad breaks.
let breaks = breakManager.getBreaks();
breaks.forEach((brk) => {
brk.isWatched = true;
});
});
لتخطّي مقطع فاصل معيّن آليًا، يجب استخدام
يجب استخدام أداة اعتراض تحميل المقطع. من
أن تعرض null
قيمة أو لا تعرض قيمة في دالة رد الاتصال، فإن المقطع في
فسيتم تخطي هذا الفاصل.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();
breakManager.setBreakClipLoadInterceptor(
(breakClip, breakClipLoadInterceptorContext) => {
return null;
});