DAI v3 থেকে v4 আপগ্রেড

tvOS DAI এবং tvOS ক্লায়েন্ট-সাইডের জন্য IMA SDKগুলি 4 সংস্করণে মার্জ করা হয়েছে, এবং iOS SDK-এর একটি সঠিক উপসেট হিসাবে পুনরায় কাজ করা হয়েছে৷ এটি উল্লেখযোগ্যভাবে iOS বিকাশকারীদের জন্য শেখার বক্ররেখা হ্রাস করে। ফলস্বরূপ, DAI ব্যবহারকারীদের জন্য প্রয়োজনীয় কিছু কোড আমাদের অন্যান্য SDK-এর সাথে আরও সামঞ্জস্যপূর্ণ হতে পরিবর্তিত হয়েছে।

এই নির্দেশিকাটি একটি বিদ্যমান v3 বাস্তবায়নকে নতুন v4 SDK-এ আপগ্রেড করার জন্য প্রয়োজনীয় প্রক্রিয়ার মধ্য দিয়ে চলে।

সন্দেহ থাকলে, iOS DAI নমুনাগুলি দেখুন — tvOS v4 API একই (সঙ্গী এবং 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];

IMAStreamRequest এ IMAVideoDisplay এবং IMAAdDisplayContainer পাস করুন

এখন আপনার কাছে একটি ভিডিও ডিসপ্লে এবং 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-এর সাথে সামঞ্জস্যপূর্ণ হওয়ার জন্য পরিবর্তন করা হয়েছে৷ স্ট্রিম ম্যানেজার এবং স্ট্রিমের মধ্যে সম্পর্কও পরিবর্তিত হয়েছে। v3 SDK-এ, একাধিক স্ট্রিম পরিচালনা করতে একটি একক স্ট্রিম ম্যানেজার ব্যবহার করা যেতে পারে। v4-এ, প্রতিটি স্ট্রিম ম্যানেজার শুধুমাত্র একটি একক স্ট্রিম পরিচালনা করতে পারে।

পরিবর্তন
পুরাতন

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