Canlı Yayını Önceden Getirme

IMA SDK, canlı yayınlar ve seç-izle videodan para kazanmak için kullanılabilir. Canlı yayınlarda her reklam arası için yeni bir reklam isteğinde bulunmanız gerekir. Tüm izleyicilerinizin bunları istemediğinden emin olmak için bu istekleri zamana yayabilirsiniz. reklam sunucusuyla uğraşmak zorunda kalabilir.

IMA SDK bu konuda yardımcı olmak için AdsRequest.liveStreamPrefetchSeconds özelliğine sahiptir. Bu özellik, SDK'nın maksimum saniye sayısını belirtir telefon ettikten sonra reklam sunucusuna ulaşmadan önce beklemelidir AdsLoader.requestAds() Gerçek istek süresi rastgele seçilir. Örneğin, Örneğin, AdsRequest.liveStreamPrefetchSeconds değerini 30 olarak ayarlarsanız SDK, siz AdsLoader.requestAds() numaralı telefonu çağırdıktan sonra 0 ila 30 saniye bekler sunucuya istekte bulunur.

Canlı yayın için önceden getirme uygulaması

Reklam arası tamamlanır tamamlanmaz sonraki reklam aranızı önceden getirmenizi öneririz. Bu, önceden getirme aralığınız için kullanılabilecek maksimum süre sağlar. Reklam araları arasında 5 dakika olduğunu varsayalım. Reklam arası tamamlandığında, 290 saniyelik önceden getirme aralığıyla bir sonraki reklam aranızı isteyebilirsiniz (5 dakika eksi 10 saniye, isteklerin önceden getirme aralığının çözmek için yeterli zamanı olur):

Objective-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;

    ...

  }

  ...

}

Swift

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

    ...
  }
}