Uaktualnienie DAI z wersji 3 do 4

Pakiet IMA DAI SDK i pakiet SDK IMA po stronie klienta zostały połączone w wersji 4. i zostały przekształcone jako dokładny podzbiór pakietu SDK na iOS. Dzięki temu deweloperzy aplikacji na iOS nie muszą poświęcać zbyt wiele czasu na naukę. W rezultacie część kodu wymaganego przez użytkowników DAI została zmieniona, aby była bardziej spójna z naszym innym pakietem SDK.

Z tego przewodnika dowiesz się, jak uaktualnić istniejącą wersję 3 do nowej wersji 4.

W razie wątpliwości zapoznaj się z Przykłady DAI w iOS – Interfejs API tvOS w wersji 4 jest taki sam (z wyjątkiem reklam towarzyszących i PIP, które są niedostępne na tvOS).

Zmiana nazwy modułu

Aby zapewnić zgodność z pakietem SDK na iOS, zmieniliśmy nazwę modułu z InteractiveMediaAds do: GoogleInteractiveMediaAds.

Zmiany
Stary

#import <InteractiveMediaAds/InteractiveMediaAds.h>
Nowość

#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h>
Stary

@import InteractiveMediaAds;
Nowość

@import GoogleInteractiveMediaAds;

Utwórz nowy kontener reklamy

IMAAdDisplayContainer odpowiada za zarządzanie widokiem kontenera reklamy i boksy reklam towarzyszących używanych do odtwarzania reklam.

Zmiany
Stary Nie ma wcześniejszego odpowiednika.
Nowość

self.adDisplayContainer =
    [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView];

Przekazuj obiekty IMAVideoDisplay i IMAAdDisplayContainer do żądania IMAStreamRequest

Masz już wyświetlacz wideo, a IMAAdDisplayContainer, musisz zdać do żądania strumienia, aby pakiet IMA DAI SDK mógł nimi zarządzać.

Zmiany
Stary

IMALiveStreamRequest *streamRequest =
    [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey];
IMAVODStreamRequest *streamRequest =
    [[IMAVODStreamRequest alloc] initWithContentSourceID:kContentSourceID
                                                 videoID:kVideoID];
Nowość

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

Żądanie z IMAAdsLoader

Zmiany
Stary

self.streamManager =
    [[IMAStreamManager alloc] initWithVideoDisplay:self.videoDisplay];
self.streamManager.delegate = self;
[self.streamManager requestStream:streamRequest];
Nowość

self.adsLoader = [[IMAAdsLoader alloc] init];
self.adsLoader.delegate = self;
[self.adsLoader requestStreamWithRequest:streamRequest];

Implementacja IMAAdsLoaderDelegate do inicjowania strumienia

Nazwy tych funkcji zostały zmienione i zmodyfikowane, by były spójne z iOS SDK. Zmieniły się również relacje między menedżerem transmisji na żywo a transmisją. W SDK w wersji 3, jeden menedżer transmisji może służyć do zarządzania wieloma strumieniami. W wersji 4 każdy menedżer transmisji może zarządzać tylko jedną transmisją.

Zmiany
Stary

- (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];
}
Nowość

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

Implementowanie IMAStreamManagerDelegate

Aby zapewnić spójność z pakietami SDK na iOS, pakiet tvOS SDK udostępnia teraz pojedynczy strumień użytkownik z przekazanym dostępem menedżera (IMAStreamManagerDelegate) do obsługi zdarzeń strumienia. Ty musisz użyć instrukcji Switch w ramach tego przedstawiciela, aby zarządzać zdarzeń.

Zmiany
Stary

- (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;
}
Nowość

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