IMA SDK সেট-আপ করা

প্ল্যাটফর্ম বেছে নিন: HTML5 Android iOS tvOS

IMA SDK আপনার ওয়েবসাইট ও অ্যাপে মাল্টিমিডিয়া বিজ্ঞাপন ইন্টিগ্রেট করা সহজ করে তোলে। IMA SDK যেকোনও VAST-এর সাথে মানানসই বিজ্ঞাপন সার্ভার থেকে বিজ্ঞাপনের অনুরোধ করতে এবং আপনার অ্যাপে বিজ্ঞাপন প্লেব্যাক ম্যানেজ করতে পারে। IMA ক্লায়েন্ট-সাইড SDK-এর সাহায্যে, আপনি কন্টেন্ট ভিডিও প্লেব্যাকের নিয়ন্ত্রণ বজায় রাখেন, তবে SDK বিজ্ঞাপন প্লেব্যাক ম্যানেজ করে। অ্যাপের কন্টেন্ট ভিডিও প্লেয়ারের উপরে পজিশন করা আলাদা ভিডিও প্লেয়ারে বিজ্ঞাপন চলে।

এই নির্দেশিকা দেখায় যে কীভাবে কোনও ভিডিও প্লেয়ার অ্যাপে IMA SDK ইন্টিগ্রেট করতে হয়। সম্পূর্ণ স্যাম্পেল ইন্টিগ্রেশন দেখতে বা অনুসরণ করতে, GitHub থেকে BasicExample ডাউনলোড করুন।

IMA ক্লায়েন্ট-সাইড ওভারভিউ

IMA ক্লায়েন্ট-সাইড প্রয়োগ করার মধ্যে চারটি প্রধান SDK কম্পোনেন্ট রয়েছে। এই নির্দেশিকা এইসব কম্পোনেন্ট দেখায়:

  • IMAAdDisplayContainer: একটি কন্টেনার অবজেক্ট যা নির্দিষ্ট করে যে IMA কোথায় বিজ্ঞাপন UI এলিমেন্ট রেন্ডার করে এবং ভিউয়েবিলিটি পরিমাপ করে, এর মধ্যে অ্যাক্টিভ ভিউ এবং ওপেন মেজারমেন্ট অন্তর্ভুক্ত।
  • IMAAdsLoader: এমন একটি অবজেক্ট যা বিজ্ঞাপনের অনুরোধ করে এবং বিজ্ঞাপনের অনুরোধের উত্তর থেকে ইভেন্ট ম্যানেজ করে। আপনাকে শুধুমাত্র একটি বিজ্ঞাপন লোডার ইনস্ট্যানশিয়েট করতে হবে, যা অ্যাপ্লিকেশন চলাকালীন বারবার ব্যবহার করা যেতে পারে।
  • IMAAdsRequest: একটি অবজেক্ট যা বিজ্ঞাপনের অনুরোধকে সংজ্ঞায়িত করে। বিজ্ঞাপন সংক্রান্ত অনুরোধে VAST বিজ্ঞাপন ট্যাগ URL-এর পাশাপাশি বিজ্ঞাপনের ডাইমেনশনের মতো অতিরিক্ত প্যারামিটার উল্লেখ করা হয়।
  • IMAAdsManager: বিজ্ঞাপনের অনুরোধের উত্তর, বিজ্ঞাপন প্লেব্যাক নিয়ন্ত্রণ করে এবং SDK-এর মাধ্যমে ফায়ার করা বিজ্ঞাপন ইভেন্ট শোনার জন্য একটি অবজেক্ট।

পূর্বশর্ত

শুরু করার আগে, আপনার এগুলি প্রয়োজন:

১. নতুন Xcode প্রোজেক্ট তৈরি করুন

Xcode-এ, Objective-C বা Swift ব্যবহার করে নতুন tvOS প্রোজেক্ট তৈরি করুন। প্রোজেক্টের নাম হিসেবে BasicExample ব্যবহার করুন।

২. Xcode প্রোজেক্টে IMA SDK যোগ করা

IMA SDK ইনস্টল করতে, পছন্দের পদ্ধতি বেছে নিন।

সাজেস্ট করা: Swift প্যাকেজ ম্যানেজার ব্যবহার করে IMA SDK ইনস্টল করুন

Interactive Media Ads SDK, 4.8.2 ভার্সন থেকে শুরু করে Swift Package Manager-এ কাজ করে। Swift প্যাকেজ ইমপোর্ট করতে এইসব ধাপ অনুসরণ করুন।

  1. Xcode-এ, IMA SDK Swift প্যাকেজ ইনস্টল করতে, ফাইল > প্যাকেজ যোগ করুন... বিকল্পে নেভিগেট করুন।

  2. যে প্রম্পটটি দেখানো হবে, সেখানে IMA SDK Swift প্যাকেজ GitHub রিপোজিটরি সার্চ করুন:

    https://github.com/googleads/swift-package-manager-google-interactive-media-ads-tvos
    
  3. আপনি IMA SDK Swift প্যাকেজের যে ভার্সন ব্যবহার করতে চান সেটি বেছে নিন। নতুন প্রোজেক্টের জন্য, আমরা পরবর্তী মেজর ভার্সন পর্যন্ত ব্যবহার করার সাজেশন দিই।

আপনার কাজ শেষ হয়ে গেলে, Xcode আপনার প্যাকেজ ডিপেন্ডেন্সি সমাধান করে এবং ব্যাকগ্রাউন্ডে সেগুলি ডাউনলোড করে। কীভাবে প্যাকেজ ডিপেন্ডেন্সি যোগ করতে হয় সেই সম্পর্কে আরও জানতে, Apple-এর নিবন্ধ দেখুন।

ম্যানুয়ালি IMA SDK ডাউনলোড ও ইনস্টল করা

আপনি Swift Package Manager ব্যবহার করতে না চাইলে, আপনার প্রোজেক্টে IMA SDK ডাউনলোড করে ম্যানুয়ালি যোগ করুন।

৩. IMA SDK ইমপোর্ট করা

import স্টেটমেন্ট ব্যবহার করে IMA ফ্রেমওয়ার্ক যোগ করুন।

Objective-C

#import "ViewController.h"
#import <AVKit/AVKit.h>

@import GoogleInteractiveMediaAds;

Swift

import AVFoundation
import GoogleInteractiveMediaAds
import UIKit

৪. ভিডিও প্লেয়ার তৈরি করুন এবং IMA SDK ইন্টিগ্রেট করুন

নিম্নলিখিত উদাহরণ IMA SDK-কে ইনিশিয়ালাইজ করে:

Objective-C

NSString *const kContentURLString =
    @"https://storage.googleapis.com/interactive-media-ads/media/stock.mp4";
NSString *const kAdTagURLString =
    @"https://pubads.g.doubleclick.net/gampad/ads?"
    @"iu=/21775744923/external/vmap_ad_samples&sz=640x480&"
    @"cust_params=sample_ar%3Dpremidpostlongpod&ciu_szs=300x250&gdfp_req=1&ad_rule=1&"
    @"output=vmap&unviewed_position_start=1&env=vp&cmsid=496&vid=short_onecue&correlator=";

@interface ViewController () <IMAAdsLoaderDelegate, IMAAdsManagerDelegate>
@property(nonatomic) IMAAdsLoader *adsLoader;
@property(nonatomic) IMAAdDisplayContainer *adDisplayContainer;
@property(nonatomic) IMAAdsManager *adsManager;
@property(nonatomic) IMAAVPlayerContentPlayhead *contentPlayhead;
@property(nonatomic) AVPlayerViewController *contentPlayerViewController;
@property(nonatomic, getter=isAdBreakActive) BOOL adBreakActive;
@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.view.backgroundColor = [UIColor blackColor];
  [self setupAdsLoader];
  [self setupContentPlayer];
}

- (void)viewDidAppear:(BOOL)animated {
  [super viewDidAppear:animated];
  [self requestAds];
}

// Add the content video player as a child view controller.
- (void)showContentPlayer {
  [self addChildViewController:self.contentPlayerViewController];
  self.contentPlayerViewController.view.frame = self.view.bounds;
  [self.view insertSubview:self.contentPlayerViewController.view atIndex:0];
  [self.contentPlayerViewController didMoveToParentViewController:self];
}

// Remove and detach the content video player.
- (void)hideContentPlayer {
  // The whole controller needs to be detached so that it doesn't capture resume events from the
  // remote and play content underneath the ad.
  [self.contentPlayerViewController willMoveToParentViewController:nil];
  [self.contentPlayerViewController.view removeFromSuperview];
  [self.contentPlayerViewController removeFromParentViewController];
}

Swift

class ViewController: UIViewController, IMAAdsLoaderDelegate, IMAAdsManagerDelegate {
  static let contentURLString =
    "https://devstreaming-cdn.apple.com/videos/streaming/examples/"
    + "img_bipbop_adv_example_fmp4/master.m3u8"
  static let adTagURLString =
    "https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/single_ad_samples&"
    + "sz=640x480&cust_params=sample_ct%3Dlinear&ciu_szs=300x250%2C728x90&gdfp_req=1&output=vast&"
    + "unviewed_position_start=1&env=vp&correlator="

  var adsLoader: IMAAdsLoader!
  var adDisplayContainer: IMAAdDisplayContainer!
  var adsManager: IMAAdsManager!
  var contentPlayhead: IMAAVPlayerContentPlayhead?
  var playerViewController: AVPlayerViewController!
  var adBreakActive = false

  deinit {
    NotificationCenter.default.removeObserver(self)
  }

  override func viewDidLoad() {
    super.viewDidLoad()
    self.view.backgroundColor = UIColor.black
    setUpContentPlayer()
    setUpAdsLoader()
  }

  override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    requestAds()
  }

এই উদাহরণে, viewDidLoad() IMAAdsLoader-কে ইনিশিয়ালাইজ করে এবং viewDidAppear() ভিউ দেখা গেলে বিজ্ঞাপন অনুরোধ করে। সহায়ক পদ্ধতি showContentPlayer() এবং hideContentPlayer() বিজ্ঞাপন চালানোর সময় কন্টেন্ট দৃশ্যমানতা টগল করে।

এই উদাহরণে, বিজ্ঞাপন অনুরোধের জন্য VAST বিজ্ঞাপন ট্যাগকে সংজ্ঞায়িত করতে adTagURLString কনস্ট্যান্ট ভেরিয়েবল এবং IMA SDK ম্যানেজ করার জন্য নিম্নলিখিত কম্পোনেন্ট ব্যবহার করা হয়:

  • adsLoader: বিজ্ঞাপনের অনুরোধ ও উত্তর ম্যানেজ করে। আমরা অ্যাপের লাইফসাইকেলের জন্য একটি ইনস্ট্যান্স ব্যবহার করার সাজেশন দিই।
  • adDisplayContainer: বিজ্ঞাপন রেন্ডার করার জন্য ভিউ নির্দিষ্ট করে।
  • adsManager: বিজ্ঞাপন প্লেব্যাক ম্যানেজ করে এবং বিজ্ঞাপন ইভেন্ট শোনার জন্য অপেক্ষা করে।
  • contentPlayhead: মিড-রোল বিজ্ঞাপন বিরতি ট্রিগার করতে কন্টেন্টের প্রগ্রেস ট্র্যাক করে।
  • adBreakActive: বিজ্ঞাপন বিরতি চলছে কিনা তা দেখায় যাতে বিজ্ঞাপন এড়িয়ে যাওয়া আটকানো যায়।

৫. কন্টেন্ট প্লেহেড ট্র্যাকার ও স্ট্রিম-শেষ হওয়ার পর্যবেক্ষক প্রয়োগ করা

মিড-রোল বিজ্ঞাপন চালাতে, IMA SDK-কে আপনার ভিডিও কন্টেন্টের বর্তমান পজিশন ট্র্যাক করতে হবে। IMA-তে বর্তমান পজিশন পাস করতে, এমন একটি ক্লাস তৈরি করুন যা IMAContentPlayhead প্রয়োগ করে। আপনি যদি AVPlayer ব্যবহার করেন, তাহলে এই উদাহরণে দেখানো হয়েছে যে, IMA SDK আপনার জন্য বর্তমান পজিশন সংক্রান্ত তথ্য পাস করার জন্য IMAAVPlayerContentPlayhead ক্লাস প্রদান করে। আপনি AVPlayer ব্যবহার না করলে, নিজের IMAContentPlayhead ক্লাসে প্রয়োগ করুন।

Objective-C

- (void)setupContentPlayer {
  // Create a content video player. Create a playhead to track content progress so the SDK knows
  // when to play ads in a VMAP playlist.
  NSURL *contentURL = [NSURL URLWithString:kContentURLString];
  AVPlayer *player = [AVPlayer playerWithURL:contentURL];
  self.contentPlayerViewController = [[AVPlayerViewController alloc] init];
  self.contentPlayerViewController.player = player;
  self.contentPlayerViewController.view.frame = self.view.bounds;
  self.contentPlayhead =
      [[IMAAVPlayerContentPlayhead alloc] initWithAVPlayer:self.contentPlayerViewController.player];

  // Track end of content.
  AVPlayerItem *contentPlayerItem = self.contentPlayerViewController.player.currentItem;
  [[NSNotificationCenter defaultCenter] addObserver:self
                                           selector:@selector(contentDidFinishPlaying:)
                                               name:AVPlayerItemDidPlayToEndTimeNotification
                                             object:contentPlayerItem];

  // Attach content video player to view hierarchy.
  [self showContentPlayer];
}

Swift

func setUpContentPlayer() {
  // Load AVPlayer with path to our content.
  let contentURL = URL(string: ViewController.contentURLString)!
  let player = AVPlayer(url: contentURL)
  playerViewController = AVPlayerViewController()
  playerViewController.player = player

  // Set up our content playhead and contentComplete callback.
  contentPlayhead = IMAAVPlayerContentPlayhead(avPlayer: player)
  NotificationCenter.default.addObserver(
    self,
    selector: #selector(ViewController.contentDidFinishPlaying(_:)),
    name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
    object: player.currentItem)

  showContentPlayer()
}

AVPlayerItemDidPlayToEndTimeNotification ব্যবহার করে আপনার কন্টেন্ট শেষ হলে IMAAdsLoader-এ contentComplete কল করার জন্য লিসনার সেট-আপ করুন। কলিং contentComplete IMA SDK-কে জানায় যে আপনার কন্টেন্ট কখন শেষ হয়েছে যাতে পোস্ট-রোল বিজ্ঞাপন দেখানো যায়।

Objective-C

- (void)contentDidFinishPlaying:(NSNotification *)notification {
  // Notify the SDK that the postrolls should be played.
  [self.adsLoader contentComplete];
}

- (void)dealloc {
  [[NSNotificationCenter defaultCenter] removeObserver:self];
}

Swift

@objc func contentDidFinishPlaying(_ notification: Notification) {
  adsLoader.contentComplete()
}

৬. বিজ্ঞাপন লোডার শুরু করুন এবং বিজ্ঞাপনের অনুরোধ করুন

একগুচ্ছ বিজ্ঞাপনের অনুরোধ করতে, একটি IMAAdsLoader ইনস্ট্যান্স তৈরি করুন। এই লোডার, নির্দিষ্ট বিজ্ঞাপন ট্যাগ URL-এর সাথে যুক্ত IMAAdsRequest অবজেক্ট প্রসেস করে।

সবচেয়ে ভালো পদ্ধতি হিসেবে, আপনার অ্যাপের সম্পূর্ণ লাইফসাইকেলে শুধুমাত্র একটি IMAAdsLoader ইনস্ট্যান্সই বজায় রাখুন। অতিরিক্ত বিজ্ঞাপনের অনুরোধ করতে, একটি নতুন IMAAdsRequest অবজেক্ট তৈরি করুন, কিন্তু একই IMAAdsLoader আবার ব্যবহার করুন। আরও তথ্যের জন্য, IMA SDK সংক্রান্ত প্রায়শই জিজ্ঞাসিত প্রশ্ন দেখুন।

Objective-C

- (void)setupAdsLoader {
  self.adsLoader = [[IMAAdsLoader alloc] init];
  self.adsLoader.delegate = self;
}

- (void)requestAds {
  // Pass the main view as the container for ad display.
  self.adDisplayContainer = [[IMAAdDisplayContainer alloc] initWithAdContainer:self.view
                                                                viewController:self];
  IMAAdsRequest *request = [[IMAAdsRequest alloc] initWithAdTagUrl:kAdTagURLString
                                                adDisplayContainer:self.adDisplayContainer
                                                   contentPlayhead:self.contentPlayhead
                                                       userContext:nil];
  [self.adsLoader requestAdsWithRequest:request];
}

Swift

func setUpAdsLoader() {
  adsLoader = IMAAdsLoader(settings: nil)
  adsLoader.delegate = self
}

func requestAds() {
  // Create ad display container for ad rendering.
  adDisplayContainer = IMAAdDisplayContainer(adContainer: self.view, viewController: self)
  // Create an ad request with our ad tag, display container, and optional user context.
  let request = IMAAdsRequest(
    adTagUrl: ViewController.adTagURLString,
    adDisplayContainer: adDisplayContainer,
    contentPlayhead: contentPlayhead,
    userContext: nil)

  adsLoader.requestAds(with: request)
}

৭. বিজ্ঞাপন লোডার ডেলিগেট সেট-আপ করা

সফলভাবে লোড ইভেন্ট হলে, IMAAdsLoader তার অ্যাসাইন করা ডেলিগেটের adsLoadedWithData মেথডকে কল করে এবং IMAAdsManager-এর একটি ইনস্ট্যান্স পাস করে। IMAAdsManager ইনস্ট্যান্স পাওয়ার পরে, বিজ্ঞাপন ম্যানেজার শুরু করুন, যা বিজ্ঞাপন ট্যাগ URL-এর উত্তরের ভিত্তিতে স্বতন্ত্র বিজ্ঞাপন লোড করে।

লোড ইভেন্ট সফল না হলে, লোডিং প্রসেস চলাকালীন হওয়া সমস্যাগুলি ম্যানেজ করার জন্য একটি IMAAdsLoader ডেলিগেট সেট-আপ করুন। বিজ্ঞাপন লোড না হলে, নিশ্চিত করুন যে মিডিয়া কন্টেন্ট দেখার জন্য ব্যবহারকারীদের বিজ্ঞাপন ছাড়াই মিডিয়া প্লেব্যাক চালিয়ে যেতে দেওয়া হয়েছে।

Objective-C

#pragma mark - IMAAdsLoaderDelegate

- (void)adsLoader:(IMAAdsLoader *)loader adsLoadedWithData:(IMAAdsLoadedData *)adsLoadedData {
  // Initialize and listen to the ads manager loaded for this request.
  self.adsManager = adsLoadedData.adsManager;
  self.adsManager.delegate = self;
  [self.adsManager initializeWithAdsRenderingSettings:nil];
}

- (void)adsLoader:(IMAAdsLoader *)loader failedWithErrorData:(IMAAdLoadingErrorData *)adErrorData {
  // Fall back to playing content.
  NSLog(@"Error loading ads: %@", adErrorData.adError.message);
  [self.contentPlayerViewController.player play];
}

Swift

func adsLoader(_ loader: IMAAdsLoader, adsLoadedWith adsLoadedData: IMAAdsLoadedData) {
  // Grab the instance of the IMAAdsManager and set ourselves as the delegate.
  adsManager = adsLoadedData.adsManager
  adsManager.delegate = self
  adsManager.initialize(with: nil)
}

func adsLoader(_ loader: IMAAdsLoader, failedWith adErrorData: IMAAdLoadingErrorData) {
  print("Error loading ads: \(adErrorData.adError.message ?? "No error message available.")")
  showContentPlayer()
  playerViewController.player?.play()
}

৮. বিজ্ঞাপন ম্যানেজার ডেলিগেট সেট-আপ করা

সবশেষে, ইভেন্ট ও স্টেট পরিবর্তন ম্যানেজ করতে, বিজ্ঞাপন ম্যানেজারের নিজস্ব ডেলিগেট প্রয়োজন। IMAAdManagerDelegate-এ বিজ্ঞাপন ইভেন্ট ও সমস্যা ম্যানেজ করার পদ্ধতি আছে, পাশাপাশি আপনার ভিডিও কন্টেন্ট চালানো ও পজ করার পদ্ধতিও আছে।

প্লেব্যাক শুরু করা হচ্ছে

didReceiveAdEvent পদ্ধতি সব IMAAdEvent ইভেন্ট ম্যানেজ করে। এই প্রাথমিক উদাহরণের জন্য, LOADED ইভেন্ট শুনুন যাতে বিজ্ঞাপন ম্যানেজারকে কন্টেন্ট ও বিজ্ঞাপন প্লেব্যাক শুরু করতে বলা যায়। ব্যবহারকারী কোনও আইকনে ট্যাপ করার পরে আইকন ফলব্যাক ডায়ালগ বন্ধ করলে, IMA SDK ICON_FALLBACK_IMAGE_CLOSED ইভেন্ট ট্রিগার করে। এই অ্যাকশন নেওয়ার পরে, বিজ্ঞাপন প্লেব্যাক আবার চালু হয়ে যায়।

Objective-C

#pragma mark - IMAAdsManagerDelegate

- (void)adsManager:(IMAAdsManager *)adsManager didReceiveAdEvent:(IMAAdEvent *)event {
  switch (event.type) {
    case kIMAAdEvent_LOADED: {
      // Play each ad once it has loaded.
      [adsManager start];
      break;
    }
    case kIMAAdEvent_ICON_FALLBACK_IMAGE_CLOSED: {
      // Resume ad after user has closed dialog.
      [adsManager resume];
      break;
    }
    default:
      break;
  }
}

Swift

func adsManager(_ adsManager: IMAAdsManager, didReceive event: IMAAdEvent) {
  switch event.type {
  case IMAAdEventType.LOADED:
    // Play each ad once it has been loaded.
    adsManager.start()
  case IMAAdEventType.ICON_FALLBACK_IMAGE_CLOSED:
    // Resume playback after the user has closed the dialog.
    adsManager.resume()
  default:
    break
  }
}

সমস্যা ম্যানেজ করা

বিজ্ঞাপন সংক্রান্ত সমস্যার জন্য একটি হ্যান্ডলার যোগ করুন। আগের ধাপের মতো কোনও সমস্যা হলে, কন্টেন্ট প্লেব্যাক আবার চালু করুন।

Objective-C

- (void)adsManager:(IMAAdsManager *)adsManager didReceiveAdError:(IMAAdError *)error {
  // Fall back to playing content.
  NSLog(@"AdsManager error: %@", error.message);
  [self showContentPlayer];
  [self.contentPlayerViewController.player play];
}

Swift

func adsManager(_ adsManager: IMAAdsManager, didReceive error: IMAAdError) {
  // Fall back to playing content
  print("AdsManager error: \(error.message ?? "No error message available.")")
  showContentPlayer()
  playerViewController.player?.play()
}

চালানো ও পজ করার ইভেন্ট ট্রিগার করা

আপনি প্রয়োগ করা শেষ দুটি ডেলিগেট পদ্ধতি, IMA SDK অনুরোধ করলে, অন্তর্নিহিত ভিডিও কন্টেন্টে প্লে ও পজ ইভেন্ট ট্রিগার করে। IMA SDK অনুরোধ করলে পজ ও প্লে ট্রিগার করা হলে, বিজ্ঞাপন দেখানোর সময় ব্যবহারকারীকে ভিডিও কন্টেন্টের অংশ মিস করতে হয় না।

Objective-C

- (void)adsManagerDidRequestContentPause:(IMAAdsManager *)adsManager {
  // Pause the content for the SDK to play ads.
  [self.contentPlayerViewController.player pause];
  [self hideContentPlayer];
  // Trigger an update to send focus to the ad display container.
  self.adBreakActive = YES;
  [self setNeedsFocusUpdate];
}

- (void)adsManagerDidRequestContentResume:(IMAAdsManager *)adsManager {
  // Resume the content since the SDK is done playing ads (at least for now).
  [self showContentPlayer];
  [self.contentPlayerViewController.player play];
  // Trigger an update to send focus to the content player.
  self.adBreakActive = NO;
  [self setNeedsFocusUpdate];
}

Swift

func adsManagerDidRequestContentPause(_ adsManager: IMAAdsManager) {
  // Pause the content for the SDK to play ads.
  playerViewController.player?.pause()
  hideContentPlayer()
  // Trigger an update to send focus to the ad display container.
  adBreakActive = true
  setNeedsFocusUpdate()
}

func adsManagerDidRequestContentResume(_ adsManager: IMAAdsManager) {
  // Resume the content since the SDK is done playing ads (at least for now).
  showContentPlayer()
  playerViewController.player?.play()
  // Trigger an update to send focus to the content player.
  adBreakActive = false
  setNeedsFocusUpdate()
}

ব্যস, এটুকুই যথেষ্ট! আপনি এখন IMA SDK-এর মাধ্যমে বিজ্ঞাপনের অনুরোধ করছেন ও বিজ্ঞাপন দেখাচ্ছেন। অতিরিক্ত SDK ফিচার সম্পর্কে জানতে, অন্যান্য নির্দেশিকা অথবা GitHub-এ নমুনা দেখুন।

পরবর্তী ধাপ

tvOS প্ল্যাটফর্মে বিজ্ঞাপন থেকে উপার্জন সর্বাধিক করতে, IDFA ব্যবহার করার জন্য অ্যাপ ট্র্যাক করা সংক্রান্ত স্বচ্ছতা ও ট্র্যাকিংয়ের অনুমতি চেয়ে নিন।