שדרוג DAI v3 ל-v4

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