DAI v3 से v4 को अपग्रेड करना

tvOS डीएआई के लिए IMA SDK और tvOS क्लाइंट-साइड को वर्शन 4 में मर्ज कर दिया गया है. इन्हें, iOS SDK के सबसेट के तौर पर फिर से तैयार किया गया है. इससे iOS डेवलपर के लिए लर्निंग कर्व काफ़ी कम हो जाता है. इस वजह से, डीएआई उपयोगकर्ताओं के लिए ज़रूरी कुछ कोड बदल गए हैं, ताकि वे हमारे दूसरे SDK टूल के साथ बेहतर तरीके से काम कर सकें.

इस गाइड में, मौजूदा v3 को लागू करने के तरीके को नए v4 SDK टूल में अपग्रेड करने की ज़रूरी प्रोसेस की जानकारी दी गई है.

अगर आपको किसी तरह का संदेह हो, तो iOS DAI सैंपल\">tvOS v4 एपीआई में कोई अंतर नहीं होता है. हालांकि, कंपैनियन और पीआईपी (पिक्चर में पिक्चर) को छोड़कर, जो 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];

स्ट्रीम शुरू करने के लिए, IMAAdsLoaderDialog से जुड़ी वैल्यू को लागू करना

इन फ़ंक्शन के नाम बदल दिए गए हैं और इनमें बदलाव किया गया है, ताकि वे iOS SDK टूल के मुताबिक हों. स्ट्रीम मैनेजर और स्ट्रीम के बीच का संबंध भी बदल गया है. 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 को लागू करना

iOS SDK टूल की तरह एक जैसा अनुभव देने के लिए, अब 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;
  }
}