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