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

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

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

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

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

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

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

  • 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 للبث وأي ترجمة يتم عرضها من خلال TVP.

  ...

  // 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
  }

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