এবার শুরু করা যাক

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

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

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

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

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

পূর্বশর্ত

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

  • Xcode 13 বা তার পরে
  • CocoaPods (পছন্দের), সুইফ্ট প্যাকেজ ম্যানেজার, অথবা TVOS-এর জন্য IMA SDK- এর ডাউনলোড করা কপি

1. একটি নতুন Xcode প্রকল্প তৈরি করুন৷

এক্সকোডে, অবজেক্টিভ-সি বা সুইফট ব্যবহার করে একটি নতুন টিভিওএস প্রকল্প তৈরি করুন। প্রকল্পের নাম হিসাবে BasicExample ব্যবহার করুন।

2. Xcode প্রকল্পে IMA SDK যোগ করুন

CocoaPods ব্যবহার করে SDK ইনস্টল করা (পছন্দের)

CocoaPods হল Xcode প্রকল্পগুলির জন্য একটি নির্ভরতা পরিচালক এবং IMA SDK ইনস্টল করার জন্য প্রস্তাবিত পদ্ধতি৷ CocoaPods ইনস্টল বা ব্যবহার সম্পর্কে আরও তথ্যের জন্য, CocoaPods ডকুমেন্টেশন দেখুন। একবার আপনার কোকোপড ইনস্টল হয়ে গেলে, IMA SDK ইনস্টল করতে নিম্নলিখিত নির্দেশাবলী ব্যবহার করুন:

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

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

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

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

ইন্টারেক্টিভ মিডিয়া বিজ্ঞাপন SDK সংস্করণ 4.8.2 থেকে শুরু করে সুইফট প্যাকেজ ম্যানেজার সমর্থন করে। সুইফট প্যাকেজ আমদানি করতে নিচের ধাপগুলো অনুসরণ করুন।

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

  2. প্রদর্শিত প্রম্পটে, IMA SDK সুইফট প্যাকেজ GitHub সংগ্রহস্থল অনুসন্ধান করুন:

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

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

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

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

3. একটি সাধারণ ভিডিও প্লেয়ার তৈরি করুন

প্রথমত, একটি মৌলিক ভিডিও প্লেয়ার প্রয়োগ করুন। প্রাথমিকভাবে, এই প্লেয়ারটি IMA SDK ব্যবহার করে না এবং প্লেব্যাক ট্রিগার করার কোনো পদ্ধতি এখনও ধারণ করে না।

ViewController.m

উদ্দেশ্য গ

#import "ViewController.h"

#import <AVKit/AVKit.h>

NSString *const kContentURLString =
    @"https://storage.googleapis.com/interactive-media-ads/media/stock.mp4";

@interface ViewController ()
@property(nonatomic) AVPlayerViewController *contentPlayerViewController;
@end

@implementation ViewController

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

- (void)setupContentPlayer {
  // Create a content video player.
  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;

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

// 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 events from the remote.
  [self.contentPlayerViewController willMoveToParentViewController:nil];
  [self.contentPlayerViewController.view removeFromSuperview];
  [self.contentPlayerViewController removeFromParentViewController];
}

@end
      

সুইফট

import AVFoundation
import UIKit

class ViewController: UIViewController {
  static let ContentURLString = "https://storage.googleapis.com/interactive-media-ads/media/stock.mp4"

  var playerViewController: AVPlayerViewController!

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

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

    showContentPlayer()
  }

  func showContentPlayer() {
    self.addChild(playerViewController)
    playerViewController.view.frame = self.view.bounds
    self.view.insertSubview(playerViewController.view, at: 0)
    playerViewController.didMove(toParent:self)
  }

  func hideContentPlayer() {
    // The whole controller needs to be detached so that it doesn't capture  events from the remote.
    playerViewController.willMove(toParent:nil)
    playerViewController.view.removeFromSuperview()
    playerViewController.removeFromParent()
  }
}
      

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

এর পরে, বিদ্যমান আমদানির নীচে একটি আমদানি বিবৃতি ব্যবহার করে IMA কাঠামো যুক্ত করুন৷

ViewController.m

উদ্দেশ্য গ

#import "ViewController.h"

#import <AVKit/AVKit.h>
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h>
NSString *const kContentURLString =
    @"https://storage.googleapis.com/interactive-media-ads/media/stock.mp4";
      

সুইফট

import AVFoundation
import GoogleInteractiveMediaAds
import UIKit

class ViewController: UIViewController {
  static let ContentURLString = "https://storage.googleapis.com/interactive-media-ads/media/stock.mp4"
      

5. কন্টেন্ট প্লেহেড ট্র্যাকার এবং এন্ড-অফ-স্ট্রীম পর্যবেক্ষক প্রয়োগ করুন

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

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

ViewController.m

উদ্দেশ্য গ

...

@interface ViewController ()
@property(nonatomic) IMAAVPlayerContentPlayhead *contentPlayhead;
@property(nonatomic) AVPlayerViewController *contentPlayerViewController;
@end

...

- (void)setupContentPlayer {
  // Create a content video player.
  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];
}

...

- (void)contentDidFinishPlaying:(NSNotification *)notification {}

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

@end
      

সুইফট

...

class ViewController: UIViewController {
  static let ContentURLString = "https://storage.googleapis.com/interactive-media-ads/media/stock.mp4"

  var contentPlayhead: IMAAVPlayerContentPlayhead?
  var playerViewController: AVPlayerViewController!

  deinit {
    NotificationCenter.default.removeObserver(self)
  }

...

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

    // Set up your 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()
  }

...

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

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

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

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

ViewController.m

উদ্দেশ্য গ

...

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&impl=s&cmsid=496&vid=short_onecue&correlator=";

@interface ViewController ()
@property(nonatomic) IMAAdsLoader *adsLoader;
@property(nonatomic) IMAAVPlayerContentPlayhead *contentPlayhead;
@property(nonatomic) AVPlayerViewController *contentPlayerViewController;
@end

@implementation ViewController

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

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

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

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

...

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

...

@end
      

সুইফট

...

class ViewController: UIViewController {
  static let ContentURLString = "https://storage.googleapis.com/interactive-media-ads/media/stock.mp4"
  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&impl=s&correlator="

  var adsLoader: IMAAdsLoader!
  var contentPlayhead: IMAAVPlayerContentPlayhead?
  var playerViewController: AVPlayerViewController!

...

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

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

...

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

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

    adsLoader.requestAds(with: request)
  }

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

7. একটি বিজ্ঞাপন লোডার প্রতিনিধি সেট আপ করুন৷

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

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

ViewController.m

উদ্দেশ্য গ

...

@interface ViewController () <IMAAdsLoaderDelegate>
@property(nonatomic) IMAAdsLoader *adsLoader;
@property(nonatomic) IMAAdsManager *adsManager;
@property(nonatomic) IMAAVPlayerContentPlayhead *contentPlayhead;
@property(nonatomic) AVPlayerViewController *contentPlayerViewController;
@end

@implementation ViewController

...

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

...

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

@end
      

সুইফট

...

class ViewController: UIViewController, IMAAdsLoaderDelegate {

...

  var adsLoader: IMAAdsLoader!
  var adsManager: IMAAdsManager!
  var contentPlayhead: IMAAVPlayerContentPlayhead?
  var playerViewController: AVPlayerViewController!

...

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

...

  // MARK: - IMAAdsLoaderDelegate

  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    adsManager = adsLoadedData.adsManager
    adsManager.initialize(with: nil)
  }

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

8. একটি বিজ্ঞাপন পরিচালক প্রতিনিধি সেট আপ করুন

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

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

এমন অনেক ইভেন্ট আছে যেগুলি পরিচালনা করার জন্য didReceiveAdEvent পদ্ধতি ব্যবহার করা যেতে পারে, কিন্তু এই মৌলিক উদাহরণের জন্য, বিজ্ঞাপন পরিচালককে বিষয়বস্তু এবং বিজ্ঞাপনের প্লেব্যাক শুরু করতে বলার জন্য LOADED ইভেন্টটি শুনুন।

ViewController.m

উদ্দেশ্য গ

@interface ViewController () <IMAAdsLoaderDelegate, IMAAdsManagerDelegate>

...

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

...

#pragma mark - IMAAdsManagerDelegate

- (void)adsManager:(IMAAdsManager *)adsManager didReceiveAdEvent:(IMAAdEvent *)event {
  // Play each ad once it has loaded.
  if (event.type == kIMAAdEvent_LOADED) {
    [adsManager start];
  }
}

...
      

সুইফট

...

class ViewController: UIViewController, IMAAdsLoaderDelegate, IMAAdsManagerDelegate {

...

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

...

  // MARK: - IMAAdsManagerDelegate

  func adsManager(_ adsManager: IMAAdsManager!, didReceive event: IMAAdEvent!) {
    // Play each ad once it has been loaded
    if event.type == IMAAdEventType.LOADED {
      adsManager.start()
    }
  }

...
      

হ্যান্ডলিং ত্রুটি

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

ViewController.m

উদ্দেশ্য গ


...

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

সুইফট

...

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

খেলা এবং বিরতি ইভেন্ট ট্রিগার

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

ViewController.m

উদ্দেশ্য গ

...

- (void)adsManagerDidRequestContentPause:(IMAAdsManager *)adsManager {
  // Pause the content for the SDK to play ads.
  [self.contentPlayerViewController.player pause];
  [self hideContentPlayer];
}

- (void)adsManagerDidRequestContentResume:(IMAAdsManager *)adsManager {
  // Resume the content since the SDK is done playing ads (at least for now).
  [self showContentPlayer];
  [self.contentPlayerViewController.player play];
}

@end
      

সুইফট

...

  func adsManagerDidRequestContentPause(_ adsManager: IMAAdsManager!) {
    // Pause the content for the SDK to play ads.
    playerViewController.player?.pause()
    hideContentPlayer()
  }

  func adsManagerDidRequestContentResume(_ adsManager: IMAAdsManager!) {
    // Resume the content since the SDK is done playing ads (at least for now).
    showContentPlayer()
    playerViewController.player?.play()
  }
}
      

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

পরবর্তী পদক্ষেপ

TVOS প্ল্যাটফর্মে বিজ্ঞাপনের আয় বাড়াতে, IDFA ব্যবহার করার জন্য অ্যাপের স্বচ্ছতা এবং ট্র্যাকিং অনুমতির অনুরোধ করুন