Pakiety IMA SDK na potrzeby DAI w tvOS i tvOS po stronie klienta zostały scalone w wersji 4 i odtworzone jako dokładny podzbiór pakietu SDK na iOS. To znacznie skraca proces uczenia się programistów aplikacji na iOS. W efekcie zmieniliśmy część kodu wymaganego przez użytkowników dynamicznego wstawiania reklam, by była bardziej zgodna z innymi pakietami SDK.
W tym przewodniku omówiono proces wymagany do uaktualnienia obecnej implementacji w wersji 3 do nowego pakietu SDK w wersji 4.
Jeśli masz wątpliwości, zapoznaj się z przykładami funkcji DAI w iOS, w której interfejs API tvOS w wersji 4 jest taki sam (z wyjątkiem reklam towarzyszących i obrazu PIP, które są niedostępne w tvOS).
Zmiana nazwy modułu
Aby była zgodna z pakietem SDK na iOS, zmieniliśmy nazwę modułu z InteractiveMediaAds
na GoogleInteractiveMediaAds
.
Zmiany | |
---|---|
Stara wersja |
#import <InteractiveMediaAds/InteractiveMediaAds.h> |
Nowi |
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h> |
Stara wersja |
@import InteractiveMediaAds; |
Nowi |
@import GoogleInteractiveMediaAds; |
Tworzenie nowego kontenera reklam
IMAAdDisplayContainer
odpowiada za zarządzanie widokiem kontenera reklamy i boksami reklam towarzyszących używanymi do odtwarzania reklam.
Zmiany | |
---|---|
Stara wersja | Nie ma poprzedniego odpowiednika. |
Nowi |
self.adDisplayContainer = [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView]; |
Przekazuj pakiety IMAVideoDisplay i IMAAdDisplayContainer do żądania IMAStreamRequest
Gdy masz już wyświetlacz wideo i element IMAAdDisplayContainer,
, musisz je przekazać w żądaniu strumienia, aby pakiet IMA SDK mógł nimi zarządzać.
Zmiany | |
---|---|
Stara wersja |
IMALiveStreamRequest *streamRequest = [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey]; IMAVODStreamRequest *streamRequest = [[IMAVODStreamRequest alloc] initWithContentSourceID:kContentSourceID videoID:kVideoID]; |
Nowi |
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 użyciem IMAAdsLoader
Zmiany | |
---|---|
Stara wersja |
self.streamManager = [[IMAStreamManager alloc] initWithVideoDisplay:self.videoDisplay]; self.streamManager.delegate = self; [self.streamManager requestStream:streamRequest]; |
Nowi | self.adsLoader = [[IMAAdsLoader alloc] init]; self.adsLoader.delegate = self; [self.adsLoader requestStreamWithRequest:streamRequest]; |
Implementowanie pakietu IMAAdsLoaderDelegat na potrzeby inicjowania strumienia
Te funkcje zostały zmienione i zmodyfikowane, aby były zgodne z pakietem SDK na iOS. Zmieniła się również relacja między menedżerem strumienia a transmisją. W pakiecie SDK w wersji 3 można używać 1 menedżera strumieni do zarządzania wieloma strumieniami. W wersji 4 każdy menedżer strumienia może zarządzać tylko 1 transmisją.
Zmiany | |
---|---|
Stara wersja |
- (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]; } |
Nowi |
- (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]; } |
Wdrażanie agenta pakietu IMAStreamManager
Aby zapewnić spójność z pakietami SDK na iOS, pakiet SDK tvOS udostępnia teraz jedną osobę z przekazanym dostępem do menedżera strumienia (IMAStreamManagerDelegate
) do obsługi zdarzeń strumienia. Teraz do zarządzania określonymi zdarzeniami musisz użyć instrukcji Switch w tym delegacji.
Zmiany | |
---|---|
Stara wersja |
- (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; } |
Nowi |
- (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; } } |