بدء استخدام حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية

اختيار حلّ DAI المطلوب

إدراج إعلان ديناميكي كامل الخدمات

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

قبل استخدام هذا الدليل، تأكد من التعرف على Chromecast بروتوكول استقبال الويب لإطار عمل التطبيق. هذا النمط مستوى أساسي من الإلمام بمفاهيم مستقبل CAF، مثل رسالة الجهات الاعتراضية أو mediaInformation بالإضافة إلى الإلمام باستخدام أمر وتحكُّم البث لمحاكاة مُرسِل CAF.

لاستخدام إدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية، يجب أن يتوفر لديك "مدير إعلانات Google" الإصدار 360. في حال وجود إعلان الحساب الإداري، يُرجى التواصل مع مدير الحساب للحصول على مزيد من التفاصيل. للحصول على معلومات حول الاشتراك في "مدير الإعلانات"، يُرجى الانتقال إلى مقالة مساعدة "مدير الإعلانات" الوسط.

للحصول على معلومات عن الدمج مع المنصات الأخرى أو عن استخدام إعلانات الوسائط التفاعلية حِزم SDK من جهة العميل، يُرجى الاطّلاع على حِزم تطوير البرامج لإعلانات الوسائط التفاعلية.

نظرة عامة على ميزة "إدراج إعلان ديناميكي" في CAF

يتضمّن تنفيذ ميزة "إدراج إعلان ديناميكي" باستخدام حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية (IMA) CAF عنصرَين أساسيَين هو موضح في هذا الدليل:

  • StreamRequest: كائن يحدد طلب البث إلى خوادم إعلانات Google. هناك نوعان رئيسيان من طلبات البث:

    • LiveStreamRequest: مفتاح مادة العرض، ومفتاح واجهة برمجة تطبيقات اختياري، بالإضافة إلى المعلمات الاختيارية.
    • VODStreamRequest: تحدّد هذه السمة معرّف مصدر المحتوى ومعرّف الفيديو وواجهة برمجة تطبيقات اختيارية. ، بالإضافة إلى معلمات اختيارية أخرى.
  • StreamManager: يشير هذا المصطلح إلى عنصر يعالج الاتصال بين الفيديو المضمّن و"إدراج إعلان ديناميكي" لإعلانات الوسائط التفاعلية. مثل تنشيط إشعارات التتبع وإعادة توجيه أحداث ساحة المشاركات إلى الناشر.

المتطلبات الأساسية

  • أن يكون لديك حساب على Cast Developer Console جهاز اختبار مسجَّل.
  • مستقبل الويب المستضاف app هو المسجلة في وحدة تحكم مطوّري البرامج لتكنولوجيا Cast والتي يمكن تعديلها لاستضافة الرمز المقدم من هذا الدليل.
  • تطبيق إرسال تم ضبطه لاستخدام تطبيق جهاز استقبال الويب. هذا المثال يستخدم أداة Cast Command وControl المُرسِل.

إعداد كائنات MediaInfo للمُرسِل

أولاً، اضبط MediaInfo في تطبيق المرسِل كائن لتضمينه الحقول التالية:

contentId معرّف فريد لعنصر الوسائط هذا
contentUrl عنوان URL للبث الاحتياطي المطلوب تحميله في حال تعذّر DAI StreamRequest لأي من السبب
streamType بالنسبة إلى أحداث البث المباشر، يجب ضبط هذه القيمة على "مباشر". بالنسبة إلى أحداث البث عند الطلب يجب ضبط هذه القيمة على "BUFFERED"
customData assetKey أحداث البث المباشر فقط تحديد البث المباشر المطلوب تحميله
contentSourceId أحداث البث عند الطلب فقط يحدد خلاصة الوسائط التي تحتوي على التدفق المطلوب.
videoId أحداث البث عند الطلب فقط يحدد البث المطلوب ضمن خلاصة وسائط محددة.
ApiKey مفتاح اختياري لواجهة برمجة التطبيقات يمكن أن يكون مطلوبًا لاسترداد عنوان URL للبث من حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية
senderCanSkip قيمة منطقية لإعلام المُستلِم بما إذا كان الجهاز المُرسِل يتضمن عرض زر التخطّي، ما يتيح عرض الإعلانات القابلة للتخطّي

لضبط هذه القيم في أداة التحكم والأوامر الخاصة بالبث، انقر على الزر تحميل الوسائط، واضبط نوع طلب التحميل المخصّص على LOAD. ثم استبدل بيانات JSON في مربّع النص باستخدام أحد كائنات JSON التالية:

بث مباشر

{
  "media": {
    "contentId": "bbb",
    "contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/bbb.m3u8",
    "streamType": "LIVE",
    "customData": {
      "assetKey": "sN_IYUG8STe1ZzhIIE_ksA",
      "ApiKey": "",
      "senderCanSkip": true
    }
  },
  "credentials": "testCredentials"
}

VOD

{
  "media": {
    "contentId": "tos",
    "contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/tos.m3u8",
    "streamType": "BUFFERED",
    "customData": {
      "contentSourceId": "2548831",
      "videoId": "tears-of-steel",
      "ApiKey": "",
      "senderCanSkip": true
    }
  },
  "credentials": "testCredentials"
}

يمكن إرسال كائن طلب التحميل المخصّص هذا إلى المستلِم لاختبار الخطوات التالية.

إنشاء جهاز استقبال CAF أساسي

باتباع دليل استقبال حزمة تطوير البرامج (SDK) الأساسية لـ CAF، أنشئ مستقبل الويب الأساسي.

من المفترض أن يظهر رمز المُستلِم على النحو التالي:

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js">
  </script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    cast.framework.CastReceiverContext.getInstance().start();
  </script>
</body>
</html>

استيراد حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية والحصول على "مدير اللاعبين"

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

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();

    castContext.start();
  </script>
</body>
</html>

إعداد مدير بث إعلانات الوسائط التفاعلية

إعداد ساحة المشاركات في حزمة تطوير البرامج لإدراج إعلان ديناميكي في CAF المدير.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    castContext.start();
  </script>
</body>
</html>

إنشاء اعتراض رسالة التحميل

تستخدم حزمة تطوير البرامج (SDK) الخاصة بميزة "إدراج إعلان ديناميكي" في CAF رسالة تحميل CAF اعتراض لإرسال طلبات البث واستبدال عنوان URL الخاص بالمحتوى بالبث النهائي لميزة "إدراج إعلان ديناميكي". يستدعي عنصر اعتراض الرسائل streamManager.requestStream() الذي يعالج إعداد الفواصل الإعلانية وطلب البث واستبدال الفيديوهات الحالية contentURL

لا يمكن أن يكون هناك أكثر من أداة واحدة لاعتراض رسالة التحميل، لذلك إذا كان تطبيقك يتطلب استخدام يجب دمج أي وظائف مخصصة مع معاودة الاتصال.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    const getStreamRequest = (request) => null;

    playerManager.setMessageInterceptor(
        cast.framework.messages.MessageType.LOAD, (request) => {
          return streamManager.requestStream(request, getStreamRequest(request))
              .then((request) => {
                this.broadcast('Stream request successful.');
                return Promise.resolve(request);
              })
              .catch((error) => {
                this.broadcast('Stream request failed.');
                return Promise.resolve(request);
              });
        });

    castContext.start();
  </script>
</body>
</html>

إنشاء طلب البث

لإكمال عملية دمج ميزة "إدراج إعلان ديناميكي" في CAF، عليك إنشاء ساحة المشاركات. طلب باستخدام البيانات المضمّنة في عنصر mediaInfo من المُرسِل.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    const 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;
    };

    playerManager.setMessageInterceptor(
        cast.framework.messages.MessageType.LOAD, (request) => {
          return streamManager.requestStream(request, getStreamRequest(request))
              .then((request) => {
                return Promise.resolve(request);
              })
              .catch((error) => {
                this.broadcast('Stream request failed.');
                return Promise.resolve(request);
              });
        });

    castContext.start();
  </script>
</body>
</html>

يمكنك الآن طلب أحداث بث DAI وتشغيلها باستخدام حزمة تطوير البرامج (SDK) الخاصة بميزة CAF DAI من Google. للحصول على مزيد من المعلومات حول ميزات حزمة تطوير البرامج (SDK) المتقدمة، يمكنك الاطّلاع على الأدلة الأخرى أو تنزيل نموذج جهاز الاستقبال التطبيقات.