IMA SDK সেট আপ করুন

প্ল্যাটফর্ম নির্বাচন করুন: HTML5 অ্যান্ড্রয়েড iOS টিভিওএস

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

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

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

IMA ক্লায়েন্ট-সাইড বাস্তবায়নে চারটি প্রধান SDK উপাদান জড়িত, যা এই নির্দেশিকায় দেখানো হয়েছে:

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

পূর্বশর্ত

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

১. একটি নতুন এক্সকোড প্রকল্প তৈরি করুন

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

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

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

ইন্টারেক্টিভ মিডিয়া বিজ্ঞাপন SDK ৪.৮.২ সংস্করণ থেকে সুইফট প্যাকেজ ম্যানেজার সমর্থন করে। সুইফট প্যাকেজ আমদানি করতে নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন।

  1. Xcode-এ, File > Add Packages... এ নেভিগেট করে IMA SDK Swift Package ইনস্টল করুন।

  2. প্রদর্শিত প্রম্পটে, IMA SDK Swift Package GitHub রিপোজিটরিটি অনুসন্ধান করুন:

    https://github.com/googleads/swift-package-manager-google-interactive-media-ads-tvos
    
  3. আপনি IMA SDK Swift Package এর যে সংস্করণটি ব্যবহার করতে চান তা নির্বাচন করুন। নতুন প্রকল্পের জন্য, আমরা Up to Next Major Version ব্যবহার করার পরামর্শ দিচ্ছি।

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

CocoaPods ব্যবহার করে IMA SDK ইনস্টল করুন

IMA SDK ইনস্টল করতে, CocoaPods ব্যবহার করুন। CocoaPods ইনস্টল বা ব্যবহার সম্পর্কে আরও তথ্যের জন্য, CocoaPods ডকুমেন্টেশন দেখুন। CocoaPods ইনস্টল করার পরে, নিম্নলিখিতগুলি করুন:

  1. আপনার BasicExample.xcodeproj ফাইলের মতো একই ডিরেক্টরিতে, Podfile নামে একটি টেক্সট ফাইল তৈরি করুন এবং নিম্নলিখিত কনফিগারেশনটি যোগ করুন:

    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :tvos, '15'
    
    target "BasicExample" do
      pod 'GoogleAds-IMA-tvOS-SDK', '~> 4.16.0'
    end
    
    
  2. পডফাইল ধারণকারী ডিরেক্টরি থেকে, pod install --repo-update চালান

  3. ইনস্টলেশনটি সফল হয়েছে কিনা তা যাচাই করতে BasicExample.xcworkspace ফাইলটি খুলে নিশ্চিত করুন যে এতে দুটি প্রকল্প রয়েছে: BasicExample এবং Pods (CocoaPods দ্বারা ইনস্টল করা নির্ভরতা)।

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

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

৩. IMA SDK আমদানি করুন

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

অবজেক্টিভ-সি

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

@import GoogleInteractiveMediaAds;

সুইফট

import AVFoundation
import GoogleInteractiveMediaAds
import UIKit

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

নিম্নলিখিত উদাহরণটি IMA SDK আরম্ভ করে:

অবজেক্টিভ-সি

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

সুইফট

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 : বিজ্ঞাপনের অতিরিক্ত অনুসন্ধান রোধ করার জন্য কোনও বিজ্ঞাপন বিরতি চলছে কিনা তা নির্দেশ করে।

৫. কন্টেন্ট প্লেহেড ট্র্যাকার এবং এন্ড-অফ-স্ট্রিম পর্যবেক্ষক বাস্তবায়ন করুন

In order to play mid-roll ads, IMA SDK needs to track the current position of your video content. To do this, create a class that implements IMAContentPlayhead . If you're using an AVPlayer , as shown in this example, SDK provides the IMAAVPlayerContentPlayhead class which does this for you. If you're not using AVPlayer , you need to implement IMAContentPlayhead on a class of your own.

অবজেক্টিভ-সি

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

সুইফট

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

আপনার কন্টেন্ট চালানো শেষ হলে আপনাকে SDK কে জানাতে হবে যাতে এটি পোস্ট-রোল বিজ্ঞাপন প্রদর্শন করতে পারে। এটি IMAAdsLoadercontentComplete কল করে, AVPlayerItemDidPlayToEndTimeNotification ব্যবহার করে করা হয়।

অবজেক্টিভ-সি

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

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

সুইফট

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

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

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

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

অবজেক্টিভ-সি

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

সুইফট

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 এর একটি উদাহরণ দেয়। এরপর আপনি বিজ্ঞাপন ম্যানেজারটি শুরু করতে পারেন, যা বিজ্ঞাপন ট্যাগ URL-এর প্রতিক্রিয়া দ্বারা সংজ্ঞায়িতভাবে পৃথক বিজ্ঞাপনগুলি লোড করে।

এছাড়াও, লোডিং প্রক্রিয়ার সময় যে কোনও ত্রুটি ঘটতে পারে তা মোকাবেলা করতে ভুলবেন না। যদি বিজ্ঞাপন লোড না হয়, তাহলে নিশ্চিত করুন যে মিডিয়া প্লেব্যাক বিজ্ঞাপন ছাড়াই চলতে থাকে, যাতে ব্যবহারকারীর অভিজ্ঞতায় হস্তক্ষেপ না হয়।

অবজেক্টিভ-সি

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

সুইফট

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 পদ্ধতি ব্যবহার করে অনেক ইভেন্ট পরিচালনা করা যেতে পারে। এই মৌলিক উদাহরণের জন্য, LOADED ইভেন্টটি বিজ্ঞাপন পরিচালককে কন্টেন্ট এবং বিজ্ঞাপনের প্লেব্যাক শুরু করতে বলে তা শুনুন। ব্যবহারকারী যখন একটি আইকনে ট্যাপ করার পরে একটি আইকন ফলব্যাক ডায়ালগ বন্ধ করে দেয় তখন IMA SDK ICON_FALLBACK_IMAGE_CLOSED ইভেন্টটি ট্রিগার করে। এই ক্রিয়াটির পরে, বিজ্ঞাপন প্লেব্যাক পুনরায় শুরু হয়।

অবজেক্টিভ-সি

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

সুইফট

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

ত্রুটি পরিচালনা

বিজ্ঞাপনের ত্রুটির জন্য একটি হ্যান্ডলারও যোগ করুন। যদি কোনও ত্রুটি দেখা দেয়, যেমনটি আগের ধাপে করা হয়েছিল, তাহলে কন্টেন্ট প্লেব্যাক পুনরায় শুরু করুন।

অবজেক্টিভ-সি

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

সুইফট

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 অনুরোধ করলে, অন্তর্নিহিত ভিডিও কন্টেন্টে প্লে এবং পজ ইভেন্টগুলি ট্রিগার করতে এবং শেষ দুটি ডেলিগেট পদ্ধতি প্রয়োগ করতে হবে। অনুরোধ করলে পজ এবং প্লে ট্রিগার করলে বিজ্ঞাপন প্রদর্শিত হলে ব্যবহারকারী ভিডিও কন্টেন্টের কিছু অংশ মিস করতে পারবেন না।

অবজেক্টিভ-সি

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

সুইফট

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 ব্যবহারের জন্য অ্যাপ ট্রান্সপারেন্সি এবং ট্র্যাকিংয়ের অনুমতির অনুরোধ করুন