از «کیت توسعه نرمافزار IMA» میتوان برای درآمدزایی از جاریسازیهای زنده و همچنین ویدیو درخواستی استفاده کرد. برای جاریسازیهای زنده، باید برای هر وقفه آگهی درخواست آگهی جدیدی ایجاد کنید. این درخواستها را بهصورت متناوب ارسال کنید تا مطمئن شوید که همه بینندگان شما بهطور همزمان درخواست آگهی نمیکنند و سرور(های) آگهی را تحت فشار قرار نمیدهند.
برای کمک به این امر، «کیت توسعه نرمافزار IMA» دارای دارایی AdsRequest.liveStreamPrefetchSeconds
است. این دارایی حداکثر تعداد ثانیههایی را که «کیت توسعه نرمافزار» باید قبلاز تماس با سرور آگهی پساز فراخوانی AdsLoader.requestAds() منتظر بماند مشخص میکند. زمان درخواست واقعی تصادفی خواهد بود. برای مثال، اگر AdsRequest.liveStreamPrefetchSeconds را روی ۳۰ تنظیم کنید،
«کیت توسعه نرمافزار» پساز اینکه AdsLoader.requestAds() را فراخوانی کردید،
بین ۰ تا ۳۰ ثانیه صبر میکند تا درخواست را به سرور ارسال کند.
پیشدریافت جاریسازی زنده در عمل
توصیه میکنیم بهمحض تکمیل یک وقفه آگهی، وقفه آگهی بعدی را پیشدریافت کنید. این کار تضمین میکند که حداکثر زمان برای پنجره پیشواکشی شما دردسترس باشد. فرض کنید ۵ دقیقه بین وقفههای آگهی فاصله دارید. وقتی وقفه آگهی تکمیل میشود، میتوانید وقفه آگهی بعدی را با پنجره پیشدریافت ۲۹۰ ثانیهای درخواست کنید (۵ دقیقه منهای ۱۰ ثانیه، برای اطمینان از اینکه درخواستهای ارسالشده در انتهای پنجره پیشدریافت زمان کافی برای حلوفصل شدن دارند):
آبجکتیو-سی
- (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
...
}
}