يشرح هذا الدليل كيفية نقل بيانات تطبيق الإصدار 2 من جهاز استقبال Cast إلى أحدث إصدار من الويب. تطبيق الاستقبال.
تُعد حزمة تطوير البرامج (SDK) الجديدة لإطار عمل تطبيقات البثّ (CAF) والمعروفة أيضًا باسم "جهاز استقبال الويب" الإصدار 3 ترقية رئيسية من حزمة تطوير البرامج (SDK) الخاصة بالإصدار 2 من حزمة SDK. توفِّر حزمة تطوير البرامج (SDK) لاستقبال الويب حزمة SDK سهلة ومبسطة لتطوير تطبيقات الوسائط على الويب.
يوفّر جهاز استقبال الويب واجهة برمجة تطبيقات تتوافق بشكل أكثر مع مُرسِل CAF الجديد. واجهات برمجة التطبيقات. وهي توفر تكاملاً كاملاً للمشغل (MPL وShka) تطبيق "وسائط البث" و"مساعد Google" ودعمهما الأوامر الصوتية. توفّر حزمة تطوير البرامج (SDK) الخاصة بشركة CAF أيضًا واجهة مستخدم تلقائية يمكن تصميمها بسهولة واستخدام CSS وخدمة ربط البيانات لتبسيط تنفيذ واجهة المستخدم.
ما هي أهمية نقل البيانات؟
من خلال نقل بيانات تطبيق "جهاز الاستقبال" الإصدار 2 إلى "جهاز استقبال الويب"، فإن الكثير من الرموز البرمجية التي تتعامل مع اللاعب، حتى تتمكن من التركيز على الكتابة منطق الأعمال الخاص بالتطبيق.
يجمع CAF بسلاسة بين مشغلات MPL وShaka لدعم مجموعة أكبر من أنواع المحتوى، بما في ذلك HTTP Live Streaming (TS وCMAF) وMPEG-DASH وSmooth أنواع البث والأنواع المتوافقة مع الموقع المصدر Media Element (MP3 وMP4 و Icecast، إلخ...). للحصول على قائمة كاملة، راجع الوسائط المتوافقة مع Google Cast. لا يتيح CAF حاليًا استخدام المشغّل الذي يوفّره المستخدم.
سيؤدي نقل البيانات إلى CAF إلى إضافة إمكانية التحكّم الصوتي باستخدام "مساعد Google". سيتم تلقائيًا توفير أي طلب صوتي جديد من "مساعد Google" عندما باستخدام CAF.
بالإضافة إلى دعم أوامر الوسائط الجديدة، مثل "تغيير المسارات حسب اللغة" و"تغيير معدل التشغيل"، يوفر CAF أيضًا إعلانات مدمجة وقائمة انتظار أفضل والدعم المباشر الأفضل.
ما الذي تم تغييره؟
تحاول واجهة برمجة تطبيقات استلام الويب اتباع الاصطلاحات التي تم تقديمها بواسطة مُرسِلو CAF لـ Android و iOS، ويختلف تمامًا عن الإصدار 2.
يستخدم جهاز استقبال الويب مساحة اسم جديدة
cast.framework
بدلاً من مساحة الاسم cast.receiver
لجميع واجهات برمجة التطبيقات التي تم الكشف عنها. العديد من
فإن كائنات البيانات التي تم استخدامها بواسطة الإصدار 2 هي نفسها في CAF ويتم الكشف عنها
الـ
cast.framework.messages
مساحة الاسم (كانت في الغالب ضمن cast.receiver.media
).
يتم استبدال خدمات الإصدار الثاني التالية بخدمات CAF المقابلة لها:
- تم استبدال فئة واحدة (
CastReceiverManager
) بـCastReceiverContext
وهو عبارة عن نغمة فردية تدير جلسة البث والمرسلين وإرسال إشعارات والرسائل وأحداث النظام العامة. تشير رسالة الأشكال البيانيةCastReceiverOptions
يمكن استخدامها لتوفير خيارات تطبيق عمومية (مثل قائمة الانتظار أو جهاز الاستقبال والإصدار وتهيئة التشغيل وما إلى ذلك) للسياق. - تم استبدال فئة واحدة (
MediaManager
) بـPlayerManager
وهي خاصيةCastReceiverContext
سينغلتون، وتدير جلسة الوسائط وطلبات الوسائط الطلبات الصوتية لخدمة "مساعد Google" (CommandAndControlManager
في الإصدار 2) ويطلق الأحداث الإعلامية. إعدادات للاعبين (cast.player.api.Host
في MPL) يتم توفيرها بواسطةPlaybackConfig
, والتي يمكن تقديمها بشكل عام أو لكل طلب تحميل.
تعرض PlayerManager
أيضًا فئات حسابات المدراء الفرعيين الجديدة:
TextTracksManager
: إدارة المقاطع الصوتية النصية للوسائطAudioTracksManager
: إدارة المقاطع الصوتيةQueueManager
: إدارة قائمة المحتوى التاليBreakManager
: إدارة الإعلانات
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
// Set global options.
const options = new cast.framework.CastReceiverOptions();
options.versionCode = DEVELOPERS_APP_VERSION;
context.start(options);
منطق أعمال المُستلِم
معالِجات الأحداث التي تم الكشف عنها في الإصدار 2 من المُستلِم (مثل CastReceiverManager.onReady
أو
MediaManager.onLoad
) لإضافة منطق العمل. في CAF، تكون معالِجات الأحداث
تم الاستبدال بأدوات معالجة الأحداث
(CastReceiverContext.addEventListener
)
وأدوات اعتراض الرسائل
(PlayerManager.setMessageInterceptor
)
يمكن أن يكون لدى مستلم الويب العديد من أدوات معالجة الأحداث لحدث ما (المستمع
لا يؤثر في الحدث)، وعنصر اعتراض واحد لكل رسالة. جهاز الاعتراض
تحديث الطلب أو التعامل معه (إرجاع طلب معدل، نجاح
أو رسالة خطأ)، ويمكن أن تكون معالجًا غير متزامن ينتج عنه وعود.
يُعد اعتراض طلب التحميل المكان الأكثر شيوعًا الذي يمكن إضافته والمنطق الخاص بالتطبيق. بالنسبة لطلبات التحميل الواردة من مُرسِل ما، يجب أن أداة الاعتراض يمكنها تحويل Content ID إلى عنوان URL للمحتوى. اعتراض التحميل هو أيضًا عن طريق طلبات التحميل المسبق والتخزين المؤقت في حالة عدم وجود أداة اعتراض صريحة تم تقديمه للتحميل المسبق أو تخزين مؤقت.
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
request => {
// Resolve entity to content id
if (request.media.entity && !request.media.contentId) {
return getMediaByEntity(request.media.entity).then(
media => {
request.media.contentId = media.url;
return request;
});
}
return request;
});
يتم أيضًا استبدال معالج حالة الوسائط المخصّص الإصدار 2 برسالة أيضًا.
أداة اعتراض لرسالة حالة الوسائط. تطبيقات مستقبِل الويب التي لا تريد
يمكن أن يؤدي عرض عنوان URL للوسائط في حالة الوسائط إلى توفير أداة حل عنوان URL
(PlayerManager.setMediaUrlResolver
),
الذي يوفِّر عنوان URL للوسائط لطلب تحميل. يستخدم CAF عنوان URL هذا
داخليًا ولا يتم تقديمه في حالة الوسائط.
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.MEDIA_STATUS,
status => {
// Disable seek.
status.supportedMediaCommands &=
~cast.framework.messages.Command.SEEK
return status;
});
فعاليات
يوفّر WebRecipient مجموعة شاملة من الأحداث من
CastReceiverContext
أو
PlayerManager
يمكن أن يكون لتطبيقات استقبال الويب العديد من أدوات معالجة البيانات في أي حدث.
ويمكن أن توفّر أيضًا مستمعًا واحدًا لأحداث متعددة. (راجع
cast.framework.events.category
لبعض مجموعات الأحداث).
وتشمل الأحداث أي طلب من المستخدم ومستوى تقدّم التشغيل ومعالجة المشغّل وأي محتوى حدث عنصر وسائط منخفض المستوى (لا يعرض CAF عنصر الوسائط نفسه).
يمكن لتطبيق WebRecipient إضافة أدوات معالجة الأحداث التي تريد اتخاذ إجراء بشأنها (على سبيل المثال، إضافة نص تعريف البيانات عند اكتمال التحميل)، أو لإجراء تحليلات.
// Log all media commands
playerManager.addEventListener(
cast.framework.events.category.REQUEST,
event => logEvent(event.type));
ناقل الرسائل المخصّص
لا يعرض CAF ناقل الرسائل في واجهة برمجة التطبيقات، بل يوفره بدلاً من ذلك
CastReceiverContext.addCustomMessageListener
إضافة أداة معالجة رسائل مساحة اسم محددة (واحدة فقط لكل مساحة اسم)
CastReceiverContext.sendCustomMessage
لإرسال رسالة على مساحة اسم. يجب الإعلان عن جميع مساحات الاسم قبل
بدء تشغيل جهاز استقبال الويب (أي قبل الاتصال
CastReceiverContext.start
).
يمكن الإعلان عن مساحات الاسم عن طريق
إضافة مستمع رسالة إليهم أو يمكن تقديمه كخيار للبدء في
CastReceiverOptions.customNamespaces
const options = new cast.framework.CastReceiverOptions();
options.customNamespaces = {
CUSTOM_NS: cast.framework.system.MessageType.JSON
};
context.start(options);
context.sendCustomMessage(CUSTOM_NS, {
type: 'status'
message: 'Playing'
});
واجهة المستخدم التلقائية
يوفر CAF واجهة مستخدم افتراضية لجهاز استقبال الويب تعرض شريط تقدم التشغيل
بيانات تعريف الوسائط حسب الحاجة. يتم توفير واجهة المستخدم التلقائية كعنصر مخصّص
(<cast-media-player>
)
يمكن تصميمه باستخدام نمط يشبه CSS.
<style>
cast-media-player { --splash-image: url("splash.png"); }
</style>
<cast-media-player></cast-media-player>
لمزيد من التخصيص، يمكن لتطبيق WebRecipient تنفيذ واجهة مستخدم خاصة به. تشير رسالة الأشكال البيانية
يوفّر جهاز استقبال الويب
cast.framework.ui.PlayerDataBinder
للمساعدة في ربط كائن واجهة مستخدم بحالة تشغيل جهاز استقبال الويب.