โฆษณาคั่นระหว่างหน้า

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

คู่มือนี้จะแสดงวิธีผสานรวมโฆษณาคั่นระหว่างหน้าเข้ากับแอป iOS

สิ่งที่ต้องดำเนินการก่อน

ทดสอบด้วยโฆษณาทดสอบเสมอ

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

วิธีที่ง่ายที่สุดในการโหลดโฆษณาทดสอบคือการใช้รหัสหน่วยโฆษณาทดสอบโดยเฉพาะสำหรับโฆษณาคั่นระหว่างหน้าใน iOS ดังนี้
ca-app-pub-3940256099942544/4411468910

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

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

การใช้งาน

ขั้นตอนหลักในการผสานรวมโฆษณาคั่นระหว่างหน้ามีดังนี้

  1. โหลดโฆษณา
  2. ลงทะเบียนสำหรับการติดต่อกลับ
  3. แสดงโฆษณาและจัดการกิจกรรมมอบรางวัล

โหลดโฆษณา

การโหลดโฆษณาจะดำเนินการได้โดยใช้เมธอด loadWithAdUnitID:request:completionHandler: แบบคงที่ในคลาส GADInterstitialAd วิธีโหลดต้องมีรหัสหน่วยโฆษณา ออบเจ็กต์ GADRequest และตัวแฮนเดิลการเติมเต็ม ซึ่งระบบจะเรียกใช้เมื่อการโหลดโฆษณาสำเร็จหรือล้มเหลว ออบเจ็กต์ GADInterstitialAd ที่โหลดจะระบุเป็นพารามิเตอร์ในเครื่องจัดการเสร็จสมบูรณ์ ตัวอย่างด้านล่างแสดงวิธีโหลด GADInterstitialAd ในชั้นเรียน ViewController

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var interstitial: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()

    do {
      interstitial = try await GADInterstitialAd.load(
        withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
    } catch {
      print("Failed to load interstitial ad with error: \(error.localizedDescription)")
    }
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GADInterstitialAd *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GADRequest *request = [GADRequest request];
  [GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
                              request:request
                    completionHandler:^(GADInterstitialAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
      return;
    }
    self.interstitial = ad;
  }];
}

ลงทะเบียนสำหรับการติดต่อกลับ

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

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var interstitial: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()

    do {
      interstitial = try await GADInterstitialAd.load(
        withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
      interstitial?.fullScreenContentDelegate = self
    } catch {
      print("Failed to load interstitial ad with error: \(error.localizedDescription)")
    }
  }

  /// Tells the delegate that the ad failed to present full screen content.
  func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
    print("Ad did fail to present full screen content.")
  }

  /// Tells the delegate that the ad will present full screen content.
  func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad will present full screen content.")
  }

  /// Tells the delegate that the ad dismissed full screen content.
  func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad did dismiss full screen content.")
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController () <GADFullScreenContentDelegate>

@property(nonatomic, strong) GADInterstitialAd *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GADRequest *request = [GADRequest request];
  [GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
                              request:request
                    completionHandler:^(GADInterstitialAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
      return;
    }
    self.interstitial = ad;
    self.interstitial.fullScreenContentDelegate = self;
  }];
}

/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
    NSLog(@"Ad did fail to present full screen content.");
}

/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
    NSLog(@"Ad will present full screen content.");
}

/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
  NSLog(@"Ad did dismiss full screen content.");
}

GADInterstitialAd เป็นออบเจ็กต์แบบใช้ครั้งเดียว ซึ่งหมายความว่าเมื่อมีการแสดงโฆษณาคั่นระหว่างหน้าแล้ว จะไม่สามารถแสดงได้อีก แนวทางปฏิบัติแนะนำคือโหลดโฆษณาคั่นระหว่างหน้าอีกรายการในเมธอด adDidDismissFullScreenContent: ใน GADFullScreenContentDelegate เพื่อให้โฆษณาคั่นระหว่างหน้าถัดไปเริ่มโหลดทันทีที่ปิดโฆษณาก่อนหน้า

แสดงโฆษณา

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

Swift

@IBAction func doSomething(_ sender: Any) {
  guard let interstitial = interstitial else {
    return print("Ad wasn't ready.")
  }

  // The UIViewController parameter is an optional.
  interstitial.present(fromRootViewController: nil)
}

Objective-C

- (IBAction)doSomething:(id)sender {
  if (self.interstitial) {
    // The UIViewController parameter is nullable.
    [self.interstitial presentFromRootViewController:nil];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

แนวทางปฏิบัติแนะนำ

พิจารณาว่าโฆษณาคั่นระหว่างหน้าเป็นประเภทโฆษณาที่เหมาะสมสำหรับแอปของคุณหรือไม่
โฆษณาคั่นระหว่างหน้าทำงานได้ดีที่สุดในแอปที่มีจุดเปลี่ยนที่เป็นธรรมชาติ การสรุปงานภายในแอป เช่น การแชร์รูปภาพหรือการผ่านด่านในเกม ทำให้เกิดจุดดังกล่าว เนื่องจากผู้ใช้คาดว่าจะได้หยุดพักระหว่างดำเนินการ การแสดงโฆษณาคั่นระหว่างหน้าจึงเป็นเรื่องง่ายโดยไม่รบกวนประสบการณ์การใช้งาน อย่าลืมพิจารณาว่าคุณจะแสดงโฆษณาคั่นระหว่างหน้า ที่จุดใดในเวิร์กโฟลว์ของแอปและว่าผู้ใช้จะตอบสนองอย่างไร
อย่าลืมหยุดการดำเนินการไว้ชั่วคราวเมื่อแสดงโฆษณาคั่นระหว่างหน้า
โฆษณาคั่นระหว่างหน้ามีหลายประเภท อาทิ แบบข้อความ รูปภาพ วิดีโอ และอีกมากมาย สิ่งสำคัญคือต้องตรวจสอบว่าเมื่อแอปแสดงโฆษณาคั่นระหว่างหน้า ก็จะมีการระงับการใช้ทรัพยากรบางส่วนด้วยเพื่อให้โฆษณาได้รับประโยชน์ ตัวอย่างเช่น เมื่อคุณเรียกใช้เพื่อแสดงโฆษณาคั่นระหว่างหน้า คุณจะต้องหยุดเอาต์พุตเสียงที่แอปสร้างไว้ชั่วคราว คุณสามารถกลับมาเล่นเสียงได้ในเครื่องจัดการเหตุการณ์ adDidDismissFullScreenContent: ซึ่งจะถูกเรียกเมื่อผู้ใช้โต้ตอบกับโฆษณาเสร็จแล้ว นอกจากนี้ ลองหยุดการคำนวณที่ซับซ้อนใดๆ (เช่น Game Loop) ไว้ชั่วคราวขณะที่โฆษณากำลังแสดงอยู่ ซึ่งจะช่วยให้ผู้ใช้ไม่พบภาพกราฟิกที่ช้าหรือไม่ตอบสนอง หรือวิดีโอกระตุก
เผื่อเวลาโหลดให้เพียงพอ
การตรวจสอบว่าแสดงโฆษณาคั่นระหว่างหน้าในเวลาที่เหมาะสมแล้วก็เป็นสิ่งสำคัญเช่นกัน เพราะผู้ใช้ไม่ต้องรอให้โหลดโฆษณาเอง การโหลดโฆษณาล่วงหน้าก่อนที่คุณจะตั้งใจจะแสดงจะช่วยให้แน่ใจว่าแอปมีโฆษณาคั่นระหว่างหน้าที่โหลดอย่างสมบูรณ์พร้อมแสดงเมื่อถึงเวลาแสดงโฆษณา
อย่าแสดงโฆษณาต่อผู้ใช้จำนวนมาก
แม้ว่าการเพิ่มความถี่ของโฆษณาคั่นระหว่างหน้าในแอปอาจดูเป็นวิธีที่ยอดเยี่ยมในการเพิ่มรายได้ แต่ก็อาจทำให้ประสบการณ์ของผู้ใช้แย่ลงและอัตราการคลิกผ่านลดลงด้วย ตรวจสอบว่าผู้ใช้ไม่รู้สึกถูกขัดจังหวะบ่อยนักจนไม่สามารถใช้ประโยชน์จากแอปของคุณได้อีกต่อไป
อย่าใช้ Callback ที่โหลดเสร็จสมบูรณ์เพื่อแสดงโฆษณาคั่นระหว่างหน้า
การดำเนินการนี้อาจทำให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ไม่ดี แต่ให้โหลดโฆษณาไว้ล่วงหน้า ก่อนที่จะต้องแสดง จากนั้นตรวจสอบเมธอด canPresentFromRootViewController:error: ใน GADInterstitialAd เพื่อดูว่าพร้อมแสดงหรือไม่

แหล่งข้อมูลเพิ่มเติม

ตัวอย่างใน GitHub

  • ตัวอย่างโฆษณาคั่นระหว่างหน้า: Swift | Objective-C

บทแนะนำแบบวิดีโอเกี่ยวกับ Mobile Ads Garage

เรื่องราวความสำเร็จ

ขั้นตอนถัดไป