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

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

इस गाइड में, मौजूदा v3 वर्शन को अपग्रेड करने की ज़रूरी प्रोसेस के बारे में बताया गया है लागू करने के लिए किया जा सकता है.

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

स्ट्रीम शुरू करने के लिए, IMAAdsLoaderDelegate को लागू करें

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

IMAStreamManagerDelegate को लागू करें

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