IMA DAI SDK וה-IMA SDK בצד הלקוח מוזגו בגרסה 4, והם פועלים כקבוצת משנה מדויקת של iOS SDK. זה משמעותי מפחיתה את עקומת הלמידה עבור מפתחי iOS. כתוצאה מכך, חלק מהקוד שנדרשת למשתמשי DAI השתנתה כך שתהיה עקביות יותר לערכות SDK אחרות.
במדריך הזה מפורט התהליך הנדרש לשדרוג גרסה 3 קיימת. ב-SDK בגרסה 4 החדשה.
אם יש לכם ספק, פנו אל דוגמאות של הטמעת מודעות דינמיות ל-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. גם הקשר בין מנהל השידור לבין הסטרימינג השתנה. ב את v3 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]; } |
הטמעת IMAStreamManagerManager
כדי לשמור על עקביות עם ערכות ה-SDK ל-iOS, tvOS SDK מספק עכשיו שידור יחיד
נציג אחר, IMAStreamManagerDelegate
, לטיפול באירועים בזרם. שלך
תצטרכו להשתמש בהצהרת החלפה בתוך אותו בעל גישה כדי לנהל
אירועים.
השינויים | |
---|---|
ישן |
- (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; } } |