إتاحة الإعلانات القابلة للتخطي

(CAF) باستخدام حزمة تطوير البرامج (SDK) الخاصة بميزة "إدراج الإعلانات الديناميكي" من Google على Chromecast

إنّ طلب عرض إعلانات قابلة للتخطّي باستخدام حزمة تطوير البرامج (SDK) الخاصة بميزة "إدراج الإعلانات الديناميكي" في CAF وعرضها هو مهمة معقّدة بعض الشيء، لأنّها تتطلّب تحديد ما إذا كان بإمكان مجموعة أجهزة الإرسال والاستقبال المستخدَمة عرض زر التخطّي والتفاعل معه.

ستبذل حزمة SDK قصارى جهدها تلقائيًا لرصد ما إذا كان جهاز الاستقبال الحالي لديه القدرة على عرض زر التخطّي والتفاعل معه مباشرةً. ومع ذلك، على الناشر تحديد ما إذا كان بإمكان أي من المرسِلين المرفقين عرض إعلانات قابلة للتخطّي، وذلك من خلال تبديل السمة imaRequestData.senderCanSkip.

في جميع نماذج حزمة تطوير البرامج (SDK) الخاصة بميزة "إعلانات البث المباشر" في "إطار عمل تطبيقات البث المباشر"، يتم تمرير senderCanSkip مباشرةً من المُرسِل كجزء من عنصر الوسائط. هذا تنفيذ مبسط عن قصد ويعمل بشكل جيد مع مرسل واحد، ولكن في التطبيقات الواقعية، يمكن ربط جهاز استقبال CAF بعدة تطبيقات مرسِلة، وقد لا يكون المرسِل الذي يضع ملف وسائط في قائمة الانتظار متصلاً عندما يتم تحميل عنصر الوسائط هذا ويتم تقديم طلب البث.

يمكن لجهاز استقبال أكثر تقدّمًا تتبُّع أنواع أجهزة الإرسال المرتبطة التي تتيح التخطّي وتلك التي لا تتيحه، والتحقّق عند وقت التحميل لمعرفة ما إذا كانت هناك أي أجهزة إرسال يمكنها التخطّي مرتبطة حاليًا بجهاز الاستقبال.

مثال (مرسِل واحد):

...

    let getStreamRequest = (request) => {
      const imaRequestData = request.media.customData;
      let streamRequest = null;
      if (imaRequestData.assetKey) {
        // Live stream
        streamRequest = new google.ima.cast.dai.api.LiveStreamRequest();
        streamRequest.assetKey = imaRequestData.assetKey;
      } else if (imaRequestData.contentSourceId) {
        // VOD stream
        streamRequest = new google.ima.cast.dai.api.VODStreamRequest();
        streamRequest.contentSourceId = imaRequestData.contentSourceId;
        streamRequest.videoId = imaRequestData.videoId;
      }
      if (streamRequest && imarequestdata.ApiKey) {
        streamRequest.ApiKey = imarequestdata.ApiKey;
      }
      if (streamRequest && imarequestdata.senderCanSkip) {
        streamRequest.senderCanSkip = imaRequestData.senderCanSkip;
      }
      return streamRequest;
    };
...

مثال (دعم عدة مرسلين):

...

    let getStreamRequest = (request) => {
      const imaRequestData = request.media.customData;
      let streamRequest = null;
      if (imaRequestData.assetKey) {
        // Live stream
        streamRequest = new google.ima.cast.dai.api.LiveStreamRequest();
        streamRequest.assetKey = imaRequestData.assetKey;
      } else if (imaRequestData.contentSourceId) {
        // VOD stream
        streamRequest = new google.ima.cast.dai.api.VODStreamRequest();
        streamRequest.contentSourceId = imaRequestData.contentSourceId;
        streamRequest.videoId = imaRequestData.videoId;
      }
      if (streamRequest && imarequestdata.ApiKey) {
        streamRequest.ApiKey = imarequestdata.ApiKey;
      }

      let senders = castContext.getSenders();
      let senderCanSkip = (sender) => {
        const skippableUserAgents = [
          "iOS CastSDK",
          "Android CastSDK"
        ];
        // trim user agent to just include device
        let userAgent = sender.userAgent.explode(',')[0];
        return skippableUserAgents.includes(userAgent);
      };
      if (streamRequest && senders.some(senderCanSkip)) {
        streamRequest.senderCanSkip = imarequestdata.senderCanSkip;
      }
      return streamRequest;
    };

...

في النهاية، يتحمّل الناشرون مسؤولية تجربة المستخدمين، وبما أنّه من الممكن أن تنقطع جميع عمليات الإرسال القابلة للتخطّي بين وقت تقديم طلب البث ووقت عرض الإعلان، قد تحتاج إلى إرفاق معالج بحدث STARTED يتحقّق مما إذا كان الإعلان قابلاً للتخطّي وما إذا كانت عمليات الإرسال والاستقبال غير قادرة على إتاحة إمكانية التخطّي. ويمكن أن يتخطّى معالج الإعلانات هذا الإعلانات من هذا النوع تلقائيًا في حال ظهورها. ومع ذلك، فإنّ عملية التنفيذ المتقدّمة هذه تتجاوز نطاق دعم CAF DAI.

بشكلٍ تلقائي، إذا حدثت حالة استخدام غير شائعة، سيظلّ بإمكان المستخدم من الناحية الفنية بدء عملية تخطّي، وذلك من خلال ربط جهاز إرسال يتيح التخطّي أولاً، ثم النقر على زر التخطّي الذي يظهر.