IMA DAI SDK و IMA SDK سمت کلاینت در نسخه 4 ادغام شده اند و به عنوان زیرمجموعه دقیقی از iOS SDK دوباره کار شده اند. این به طور قابل توجهی منحنی یادگیری را برای توسعه دهندگان iOS کاهش می دهد. در نتیجه، برخی از کدهای مورد نیاز برای کاربران DAI تغییر کرده است تا با سایر SDK های ما سازگارتر باشد.
این راهنما فرآیند مورد نیاز برای ارتقاء یک پیادهسازی نسخه 3 موجود به SDK جدید v4 را طی میکند.
اگر شک دارید، با نمونههای DAI iOS مشورت کنید — API tvOS v4 یکسان است (به جز همراهان و PIP که در tvOS در دسترس نیستند).
نام ماژول را تغییر دهید
برای مطابقت با iOS SDK، نام ماژول را از InteractiveMediaAds
به GoogleInteractiveMediaAds
تغییر دادهایم.
تغییرات | |
---|---|
قدیمی | #import <InteractiveMediaAds/InteractiveMediaAds.h> |
جدید | #import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h> |
قدیمی | @import InteractiveMediaAds; |
جدید | @import GoogleInteractiveMediaAds; |
ظرف تبلیغات جدید را ایجاد کنید
IMAAdDisplayContainer
مسئول مدیریت نمای کانتینر آگهی و جایگاه های تبلیغات همراه مورد استفاده برای پخش آگهی است.
تغییرات | |
---|---|
قدیمی | هیچ معادل قبلی وجود ندارد. |
جدید | self.adDisplayContainer = [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView]; |
IMAVideoDisplay و IMAAdDisplayContainer را به IMAStreamRequest منتقل کنید
اکنون که یک نمایشگر ویدیو و IMAAdDisplayContainer,
باید آنها را به درخواست جریان ارسال کنید تا IMA DAI SDK بتواند آنها را مدیریت کند.
تغییرات | |
---|---|
قدیمی | IMALiveStreamRequest *streamRequest = [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey]; IMAVODStreamRequest *streamRequest = [[IMAVODStreamRequest alloc] initWithContentSourceID:kContentSourceID videoID:kVideoID]; |
جدید | IMALiveStreamRequest *streamRequest = [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey adDisplayContainer:self.adDisplayContainer videoDisplay:self.videoDisplay]; IMAVODStreamRequest *streamRequest = [[IMAVODStreamRequest alloc] initWithContentSourceId:kContentSourceID videoId:kVideoID adDisplayContainer:self.adDisplayContainer videoDisplay:self.videoDisplay]; |
درخواست با IMAAdsLoader
تغییرات | |
---|---|
قدیمی | self.streamManager = [[IMAStreamManager alloc] initWithVideoDisplay:self.videoDisplay]; self.streamManager.delegate = self; [self.streamManager requestStream:streamRequest]; |
جدید | self.adsLoader = [[IMAAdsLoader alloc] init]; self.adsLoader.delegate = self; [self.adsLoader requestStreamWithRequest:streamRequest]; |
پیاده سازی IMAAdsLoaderDelegate برای مقداردهی اولیه جریان
این توابع تغییر نام داده و اصلاح شده اند تا با iOS SDK سازگار باشند. رابطه بین مدیر جریان و جریان نیز تغییر کرده است. در نسخه 3 SDK، یک مدیر جریان میتواند برای مدیریت چند جریان استفاده شود. در نسخه 4، هر مدیر جریان تنها می تواند یک جریان واحد را مدیریت کند.
تغییرات | |
---|---|
قدیمی | - (void)streamManager:(IMAStreamManager *)streamManager didInitializeStream:(NSString *)streamID { NSLog(@"Stream initialized with streamID: %@", streamID); } - (void)streamManager:(IMAStreamManager *)streamManager didReceiveError:(NSError *)error { NSLog(@"Error: %@", error); [self playBackupStream]; } |
جدید | - (void)adsLoader:(IMAAdsLoader *)loader adsLoadedWithData:(IMAAdsLoadedData *)adsLoadedData { self.streamManager = adsLoadedData.streamManager; self.streamManager.delegate = self; [self.streamManager initializeWithAdsRenderingSettings:nil]; NSLog(@"Stream initialized with streamID: %@", self.streamManager.streamId); } - (void)adsLoader:(IMAAdsLoader *)loader failedWithErrorData:(IMAAdLoadingErrorData *)adErrorData { NSLog(@"Error: %@", adErrorData.adError); [self playBackupStream]; } |
پیاده سازی IMAStreamManagerDelegate
برای سازگاری با iOS SDK، tvOS SDK اکنون یک نماینده مدیریت جریان، IMAStreamManagerDelegate
را برای مدیریت رویدادهای جریان ارائه میکند. اکنون باید از عبارت switch در آن نماینده برای مدیریت رویدادهای خاص استفاده کنید.
تغییرات | |
---|---|
قدیمی | - (void)streamManager:(IMAStreamManager *)streamManager adBreakDidStart:(IMAAdBreakInfo *)adBreakInfo { NSLog(@"Ad break started"); self.playerViewController.requiresLinearPlayback = YES; } - (void)streamManager:(IMAStreamManager *)streamManager adBreakDidEnd:(IMAAdBreakInfo *)adBreakInfo { NSLog(@"Ad break ended"); self.playerViewController.requiresLinearPlayback = NO; } |
جدید | - (void)streamManager:(IMAStreamManager *)streamManager didReceiveAdEvent:(IMAAdEvent *)event { NSLog(@"StreamManager event (%@).", event.typeString); switch (event.type) { case kIMAAdEvent_AD_BREAK_STARTED: { NSLog(@"Ad break started"); self.playerViewController.requiresLinearPlayback = YES; break; } case kIMAAdEvent_AD_BREAK_ENDED: { NSLog(@"Ad break ended"); self.playerViewController.requiresLinearPlayback = NO; break; } // And so on for other events. default: break; } } |