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

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

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

إدراج إعلان ديناميكي في مجموعة الإعلانات

يشرح هذا الدليل كيفية تشغيل بث مباشر أو فيديو عند الطلب باستخدام "إدراج إعلان ديناميكي" باستخدام ميزة "إدراج إعلان ديناميكي" حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية لنظام التشغيل tvOS مع مشغّل فيديو بسيط. إذا كنت ترغب في اتباع مع العيّنة المكتملة، نزِّل التطبيق "مثال على عرض الكبسولات" (Obj C أو Swift).

نظرة عامة على عرض الإعلانات المتسلسلة لإعلانات الوسائط التفاعلية

يشمل تنفيذ عرض الإعلانات المتسلسلة باستخدام حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية لنظام التشغيل tvOS اثنين المكونات:

  • StreamRequest: كائن يحدّد طلب البث خوادم إعلانات Google. يجب أن يتم إنشاؤه باستخدام إما IMAPodStreamRequest أو IMAPodVODStreamRequest لتفعيل عرض الإعلانات المتسلسلة. تتطلب كلتا الطريقتين رمز شبكة يحتاج IMAPodStreamRequest أيضًا إلى مفتاح مادة عرض مخصّص. مفتاح واجهة برمجة التطبيقات هو اختيارية.

  • IMAStreamManager: كائن يعالج الاتصال بين الفيديو المضمّن وحزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية، مثل إشعارات التتبع إعادة توجيه أحداث البث إلى الناشر.

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

قبل البدء، تحتاج إلى ما يلي:

إعداد متغيّرات عرض الإعلانات المتسلسلة

سيتم تنفيذ جميع التغييرات اللازمة لعرض مجموعات الإعلانات المتسلسلة في ViewController.swift في Swift أو ViewController.m في Objective-C. المقتطفات في هذا الدليل افتراضيًا إلى استخدام لغة Swift. تتمثل الخطوة الأولى في تحديث المتغيرات الثابتة.

في ما يلي ثوابت طلبات بث مجموعة الإعلانات المتسلسلة المطلوب إضافتها:

  • STREAM_URL (يُستخدَم فقط لأحداث البث المباشر): عنوان URL لبث الفيديو الذي توفّره الجهة المسؤولة عن التحكّم في البيان أو الشريك الخارجي الذي يستخدم عرض الإعلانات المتسلسلة. يجب مطلوب منك إدراج معرّف مصدر البيانات الذي توفّره حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية قبل تقديم طلب في هذه الحالة، يتضمّن عنوان URL للبث عنصرًا نائبًا "[[STREAMID]]"، الذي يتم استبداله بمعرّف مصدر البيانات، قبل إنشاء طلبك.
  • NETWORK_CODE: رمز الشبكة لحسابك على "مدير الإعلانات 360".
  • CUSTOM_ASSET_KEY (يُستخدَم فقط لأحداث البث المباشر): مفتاح مادة العرض المخصّص يحدد حدث عرض اللوحة في "مدير إعلانات Google 360". يمكن إنشاء هذا من خلال أداة التحكّم في البيان أو شريك عرض الإعلانات المتسلسلة التابع لجهة خارجية
  • API_KEY (يُستخدَم فقط لأحداث البث المباشر): مفتاح واجهة برمجة تطبيقات اختياري يمكن استخدامه المطلوب لاسترداد رقم تعريف مصدر البيانات من حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية.

غيِّر قسم المتغيّرات في المثال ليتطابق مع ما يلي:

...
class ViewController:
  UIViewController,
  IMAAdsLoaderDelegate,
  IMAStreamManagerDelegate,
  AVPlayerViewControllerDelegate
{
  static let streamUrl =
    "https://encodersim.sandbox.google.com/masterPlaylist/9c654d63-5373-4673-8c8d-6d92b66b9d46/master.m3u8?gen-seg-redirect=true&network=51636543&event=google-sample&pids=devrel4628000,devrel896000,devrel3528000,devrel1428000,devrel2628000,devrel1928000&seg-host=dai.google.com&stream_id=[[STREAMID]]"
  static let networkCode = "51636543"
  static let customAssetKey = "google-sample"
  static let APIKey = ""
  static let backupStreamURLString =
    "http://googleimadev-vh.akamaihd.net/i/big_buck_bunny/bbb-,480p,720p,1080p,.mov.csmil/master.m3u8"

  var adsLoader: IMAAdsLoader?
  ...

إنشاء طلب بث مباشر أو لمجموعة فيديوهات عند الطلب

عرض مجموعة البث المباشر

عليك تعديل طريقة requestStream لإنشاء طلب بث مباشر لمجموعة تجريبية من خلال إنشاء مثيل لـ IMAPodStreamRequest.

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodStreamRequest(
      networkCode: self.networkCode,
      customAssetKey: self.customAssetKey,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

عرض مجموعة البث الخاصة بالفيديوهات عند الطلب

عدِّل طريقة requestStream لإنشاء طلب بث سلسلة فيديوهات عند الطلب من خلال إنشاء مثيل لـ IMAPodVODStreamRequest.

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodVODStreamRequest(
      networkCode: self.networkCode,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

تعديل عنوان URL للبث وضبطه

عرض مجموعة البث المباشر

تعديل طرق IMAAdsLoaderDelegate، باستخدام streamManager.streamId من أجل الحصول على معرّف مصدر البيانات بعد ذلك، أدرِج معرّف مصدر البيانات في STREAM_URL، مع استبدال "[[STREAMID]]" بعد إجراء هذا التغيير، سيصبح عنوان URL الجديد للبث تم الضبط باستخدام videoDisplay.loadStream().

  ...

  // MARK: - IMAAdsLoaderDelegate
  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    let urlString = streamUrl.replacingOccurrences(of: "[[STREAMID]]", with: streamId)
    let loadedStreamUrl = URL(string:urlString)
    self.videoDisplay.loadStream(loadedStreamUrl, subtitles:@[])
    self.videoDisplay.play()
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

  ...

عرض مجموعة البث الخاصة بالفيديوهات عند الطلب

تعديل طرق IMAAdsLoaderDelegate، باستخدام streamManager.streamId من أجل الحصول على معرّف مصدر البيانات بعد ذلك، يمكنك طلب عنوان URL للبث من تكنولوجيا الفيديو التي تستخدمها. شريك (VTP) والاتصال بـ IMAStreamManager.loadThirdPartyStream() للحصول على إعلانات الوسائط التفاعلية عنوان URL للبث وأي ترجمات يعرضها التلفزيون.

  ...

  // MARK: - IMAAdsLoaderDelegate
  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    // 'vtpInterface' is a place holder for your own video technology partner
    // (VTP) API calls.
    let streamUrl = vtpInterface.requestStreamURL(streamID)
    self.streamManager.loadThirdPartyStream(streamUrl, streamSubtitles:@[])
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

هذا كل شيء! أنت الآن تطلب الإعلانات وتعرضها في مجموعة بث تعرض الإعلانات المتسلسلة باستخدام حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية لنظام التشغيل tvOS للاطّلاع على أمثلة أخرى على استخدام حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية: راجِع النماذج على GitHub.