پخش جریانی زنده از پیش واکشی

از IMA SDK می‌توان برای کسب درآمد از جریان‌های زنده و همچنین ویدیوهای درخواستی استفاده کرد. برای پخش جریانی زنده، باید برای هر وقفه تبلیغاتی یک درخواست آگهی جدید ارائه دهید. این درخواست‌ها را تکان دهید تا مطمئن شوید که همه بینندگان شما به طور هم‌زمان درخواست تبلیغات نمی‌کنند و سرور(های) تبلیغات را دچار مشکل نمی‌کنند.

برای کمک به این امر، IMA SDK دارای ویژگی AdsRequest.liveStreamPrefetchSeconds است. این ویژگی حداکثر ثانیه‌ای را مشخص می‌کند که SDK باید قبل از تماس با سرور آگهی پس از فراخوانی AdsLoader.requestAds() منتظر بماند. زمان واقعی درخواست تصادفی خواهد شد. به عنوان مثال، اگر AdsRequest.liveStreamPrefetchSeconds روی 30 تنظیم کنید، SDK پس از فراخوانی AdsLoader.requestAds() بین 0 تا 30 ثانیه منتظر می ماند تا در واقع درخواست را به سرور ارسال کند.

پخش زنده از پیش واکشی در عمل

توصیه می کنیم به محض اتمام وقفه آگهی، وقفه آگهی بعدی خود را از قبل واکشی کنید. این تضمین می کند که حداکثر مدت زمان برای پنجره پیش واکشی شما در دسترس است. فرض کنید بین وقفه های تبلیغاتی 5 دقیقه فرصت دارید. وقتی یک وقفه تبلیغاتی کامل شد، می‌توانید وقفه آگهی بعدی خود را با یک پنجره پیش واکشی 290 ثانیه‌ای (5 دقیقه منهای 10 ثانیه، برای اطمینان از اینکه درخواست‌های ارسال‌شده در انتهای پنجره پیش واکشی زمان کافی برای حل کردن دارند) درخواست کنید. :

// 5 minutes == 300 seconds. Include a 10 second buffer
var AD_INTERVAL = 290;

function onAdEvent(adEvent) {
  var ad = adEvent.getAd();
  switch(adEvent.type) {
    case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:
      // Pre-fetch our next ad break.
      requestAds();
      // Play those ads in 5 minutes. In a real-world implementation,
      // this is likely done as the result of a message from your
      // streaming server, not a timeout.
      setTimeout(playAds, AD_INTERVAL * 1000);// Convert to ms.
  }
}

function requestAds() {
  // Destroy the current AdsManager, in case the tag you requested previously
  // contains post-rolls (don't play those now).
  if (adsManager) {
    adsManager.destroy();
  }
  // Your AdsLoader will be set up on page-load. You should re-use the same
  // AdsLoader for every request. For more info on setting up the AdsLoader,
  // see the "Get Started" guide in the prerequisites above.
  if (adsLoader) {
    // Reset the IMA SDK.
    adsLoader.contentComplete();
  }
  var adsRequest = new google.ima.AdsRequest();
  adsRequest.adTagUrl = '...';
  adsRequest.linearAdSlotWidth = <linear_width>;
  adsRequest.linearAdSlotHeight = <linear_height>;
  adsRequest.nonLinearAdSlotWidth = <nonlinear_width>;
  adsRequest.nonLinearAdSlotHeight = <nonlinear_height>;
  adsRequest.liveStreamPrefechSeconds = AD_INTERVAL;
  adsLoader.requestAds(adsRequest);
}

function playAds() {
  adsManager.init(
      <linear_width>,  <linear_height>, google.ima.ViewMode.NORMAL);
  adsManager.start();
}