النقل إلى جهاز استقبال الويب

يشرح هذا الدليل كيفية نقل بيانات تطبيق الإصدار 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 أيضًا فئات حسابات المدراء الفرعيين الجديدة:

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 للمساعدة في ربط كائن واجهة مستخدم بحالة تشغيل جهاز استقبال الويب.