เริ่มเลย

IMA SDK ช่วยให้การผสานรวมโฆษณามัลติมีเดียในเว็บไซต์และแอปของคุณทำได้โดยง่าย IMA SDK สามารถ ส่งคำขอโฆษณาจาก เซิร์ฟเวอร์โฆษณาที่ปฏิบัติตามข้อกำหนดของ VAST และจัดการการเล่นโฆษณาในแอปของคุณ ด้วย SDK ฝั่งไคลเอ็นต์ของ IMA โดยคุณจะเป็นผู้ควบคุมการเล่นวิดีโอเนื้อหา ในขณะที่ SDK จัดการการเล่นโฆษณา โฆษณาจะเล่นใน วิดีโอเพลเยอร์แยกต่างหากจะอยู่ที่ด้านบนของโปรแกรมเล่นวิดีโอเนื้อหาของแอป

คู่มือนี้จะสาธิตวิธีผสานรวม IMA SDK เข้ากับโปรแกรมเล่นวิดีโอแบบง่าย แอป หากคุณต้องการดูหรือติดตามไปพร้อมกับตัวอย่างที่สมบูรณ์ การผสานรวม ให้ดาวน์โหลด BasicExample จาก GitHub

ภาพรวมฝั่งไคลเอ็นต์ของ IMA

การใช้งานฝั่งไคลเอ็นต์ของ IMA ประกอบด้วยองค์ประกอบหลักของ SDK 4 อย่าง ได้แก่ ที่แสดงในคู่มือนี้

  • IMAAdDisplayContainer: Container Object ที่มีการแสดงโฆษณา
  • IMAAdsLoader: ออบเจ็กต์ที่ขอโฆษณาและจัดการเหตุการณ์จากการตอบกลับคำขอโฆษณา คุณควรทำดังนี้ สร้างอินสแตนซ์ตัวโหลดโฆษณา 1 รายการ ซึ่งสามารถนำไปใช้ซ้ำได้ตลอดอายุแอปพลิเคชัน
  • IMAAdsRequest: ออบเจ็กต์ที่กำหนดคำขอโฆษณา คำขอโฆษณาจะระบุ URL สำหรับแท็กโฆษณา VAST เช่นเดียวกับ พารามิเตอร์เพิ่มเติม เช่น มิติข้อมูล
  • IMAAdsManager: ออบเจ็กต์ที่มีการตอบกลับคำขอโฆษณา ควบคุมการเล่นโฆษณา และฟังโฆษณา เหตุการณ์ที่ SDK เรียกให้แสดง

ข้อกำหนดเบื้องต้น

ก่อนที่จะเริ่มต้น คุณต้องมีสิ่งต่อไปนี้

1. สร้างโปรเจ็กต์ Xcode ใหม่

ใน Xcode ให้สร้างโปรเจ็กต์ tvOS ใหม่โดยใช้ Objective-C หรือ Swift ใช้ BasicExample เป็นชื่อโปรเจ็กต์

2. เพิ่ม IMA SDK ลงในโปรเจ็กต์ Xcode

การติดตั้ง SDK โดยใช้ CocoaPods (แนะนำ)

CocoaPods เป็นผู้จัดการทรัพยากร Dependency สำหรับโปรเจ็กต์ Xcode และเป็นตัวเลือกที่แนะนำ ในการติดตั้ง IMA SDK สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งหรือการใช้ CocoaPods โปรดดูเอกสารประกอบของ 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.13.0'
    end
    
  2. จากไดเรกทอรีที่มี Podfile ให้เรียกใช้ pod install --repo-update

  3. ยืนยันว่าการติดตั้งเสร็จสมบูรณ์โดยเปิด BasicExample.xcworkspace และการยืนยันว่าไฟล์ดังกล่าวมี 2 โปรเจ็กต์ ดังนี้ BasicExample และ Pods (ทรัพยากร Dependency ที่ติดตั้งโดย CocoaPods)

ติดตั้ง SDK โดยใช้ Swift Package Manager

SDK โฆษณาสื่ออินเทอร์แอกทีฟสนับสนุน Swift Package เครื่องมือจัดการเริ่มต้นในเวอร์ชัน 4.8.2 ทำตาม ขั้นตอนด้านล่างเพื่อนำเข้าแพ็กเกจ Swift

  1. ใน Xcode ให้ติดตั้งแพ็กเกจ IMA SDK Swift โดยไปที่ ไฟล์ > เพิ่มแพ็กเกจ...

  2. ค้นหา GitHub แพ็กเกจ IMA SDK Swift ในข้อความแจ้งที่ปรากฏขึ้น ที่เก็บ:

    https://github.com/googleads/swift-package-manager-google-interactive-media-ads-tvos
    
  3. เลือกเวอร์ชันของแพ็กเกจ IMA SDK Swift ที่คุณต้องการใช้ สําหรับโปรเจ็กต์ใหม่ เราขอแนะนําให้ใช้เวอร์ชันหลักถัดไป

เมื่อเสร็จแล้ว Xcode จะแปลงทรัพยากร Dependency ของแพ็กเกจและ ดาวน์โหลดวิดีโอเหล่านั้นในพื้นหลัง ดูรายละเอียดเพิ่มเติมเกี่ยวกับวิธีเพิ่มแพ็กเกจ ทรัพยากร Dependency โปรดดู บทความของ Apple

การดาวน์โหลดและติดตั้ง SDK ด้วยตนเอง

หากไม่ต้องการใช้ CocoaPods คุณสามารถดาวน์โหลด IMA SDK และ เพิ่มลงในโปรเจ็กต์ของคุณ

3. สร้างวิดีโอเพลเยอร์ง่ายๆ

ก่อนอื่น ให้ใช้โปรแกรมเล่นวิดีโอพื้นฐาน ในตอนแรก โปรแกรมเล่นนี้จะไม่ใช้ IMA SDK และยังไม่มีวิธีการทริกเกอร์การเล่น

ViewController.m

Objective-C

#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
      

Swift

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

Objective-C

#import "ViewController.h"

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

Swift

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 ทราบเมื่อเนื้อหาเล่นเสร็จแล้วด้วย แสดงโฆษณาตอนท้าย ซึ่งทำได้โดยโทรไปที่ contentComplete บน IMAAdsLoader โดยใช้ AVPlayerItemDidPlayToEndTimeNotification

ViewController.m

Objective-C

...

@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
      

Swift

...

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 ตัวโหลดนี้สามารถใช้ในการประมวลผลออบเจ็กต์ IMAAdsRequest รายการที่เชื่อมโยงกับ URL ของแท็กโฆษณาที่ระบุ

แนวทางปฏิบัติแนะนำคือให้เก็บ IMAAdsLoader ไว้เพียง 1 อินสแตนซ์สำหรับทั้ง วงจรของแอป หากต้องการสร้างคำขอโฆษณาเพิ่มเติม ให้สร้าง IMAAdsRequest แต่ใช้ IMAAdsLoader เดิมซ้ำ สำหรับข้อมูลเพิ่มเติม โปรดดูคำถามที่พบบ่อยเกี่ยวกับ IMA SDK

ViewController.m

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

Swift

...

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 คุณ จะสามารถเริ่มต้น Ad Manager ซึ่งจะโหลดโฆษณาแต่ละรายการตามที่กําหนดไว้ ตามการตอบกลับ URL ของแท็กโฆษณา

นอกจากนี้ ต้องแน่ใจว่าได้จัดการกับข้อผิดพลาดที่อาจเกิดขึ้นระหว่างการโหลด ขั้นตอนได้ หากโฆษณาไม่โหลด ให้ตรวจสอบว่าการเล่นสื่อดำเนินต่อไป โดย เพื่อไม่ให้รบกวนประสบการณ์ของผู้ใช้

ViewController.m

Objective-C

...

@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
      

Swift

...

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

Objective-C

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

...
      

Swift

...

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

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

Swift

...

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

การทริกเกอร์เหตุการณ์เล่นและหยุดชั่วคราว

วิธีผู้รับมอบสิทธิ์ 2 วิธีสุดท้ายที่คุณต้องใช้นั้นจะใช้เพื่อกระตุ้นให้เกิดการเล่นและ หยุดเหตุการณ์ในเนื้อหาวิดีโอที่สำคัญชั่วคราว เมื่อ IMA SDK ขอ การทริกเกอร์ให้หยุดชั่วคราวและเล่นตามคำขอเพื่อป้องกันไม่ให้ผู้ใช้ขาดส่วนเนื้อหาบางส่วน ของเนื้อหาวิดีโอเมื่อแสดงโฆษณา

ViewController.m

Objective-C

...

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

Swift

...

  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