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

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

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

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

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

هدف-C


- (void)adsManager:(IMAAdsManager *)adsManager didReceiveAdEvent:(IMAAdEvent *)event {

  ...

  switch (event.type) {

    ...

    case kIMAAdEvent_ALL_ADS_COMPLETED:

      IMAAdsRequest *request = [[IMAAdsRequest alloc]
             initWithAdTagUrl: self.adTagUrl
           adDisplayContainer: self.adDisplayContainer
         avPlayerVideoDisplay: self.avPlayerVideoDisplay
        pictureInPictureProxy: self.pictureInPictureProxy
                  userContext: nil];

      // set a delay between the end of the last ad
      // in the last request, and the first ad from
      // the new request
      Float64 adGap = 30;
      // make sure the request occurs at least five
      // seconds before starting the new set of ads
      request.liveStreamPrefetchSeconds = adGap - 5;
      [self.adsLoader requestAdsWithRequest:request];
      // start new ads after adGap seconds have elapsed
      dispatch_after(dispatch_time(DISPATCH_TIME_NOW, adGap * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
        [adsManager start];
      });

      break;

    ...

  }

  ...

}

سویفت

func adsManager(_ adsManager: IMAAdsManager!, didReceive event: IMAAdEvent!) {
  switch event.type {

    ...

    case IMAAdEventType.ALL_ADS_COMPLETED:

      let request = IMAAdsRequest(
        adTagUrl: AdTagUrl,
        adDisplayContainer: adDisplayContainer,
        contentPlayhead: contentPlayhead,
        userContext: nil)

      // set a delay between the end of the last ad
      // in the last request, and the first ad from
      // the new request
      let adGap = 30
      // make sure the request occurs at least five
      // seconds before starting the new set of ads
      request.liveStreamPrefetchSeconds = adGap - 5
      adsLoader.requestAds(with: request)
      // start new ads after adGap seconds have elapsed
      DispatchQueue.main.asyncAfter(deadline: .now() + adGap) {
        adsManager.start()
      }

      break

    ...
  }
}