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

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

คู่มือนี้แสดงวิธีผสานรวมโฆษณาคั่นระหว่างหน้ากับแอป 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()
    let request = GADRequest()
    GADInterstitialAd.load(withAdUnitID: "ca-app-pub-3940256099942544/4411468910",
                                request: request,
                      completionHandler: { [self] ad, error in
                        if let error = error {
                          print("Failed to load interstitial ad with error: \(error.localizedDescription)")
                          return
                        }
                        interstitial = ad
                      }
    )
  }
}

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 จะจัดการกับโค้ดเรียกกลับในกรณีที่โฆษณาแสดงผลสำเร็จหรือไม่สำเร็จ และปิดโฆษณาดังกล่าว โค้ดต่อไปนี้แสดงวิธีการใช้โปรโตคอลและกำหนดให้กับโฆษณา

Swift

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var interstitial: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()
    let request = GADRequest()
    GADInterstitialAd.load(withAdUnitID: "ca-app-pub-3940256099942544/4411468910",
                                request: request,
                      completionHandler: { [self] ad, error in
                        if let error = error {
                          print("Failed to load interstitial ad with error: \(error.localizedDescription)")
                          return
                        }
                        interstitial = ad
                        interstitial?.fullScreenContentDelegate = self
                      }
    )
  }

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

@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) {
  if interstitial != nil {
    interstitial.present(fromRootViewController: self)
  } else {
    print("Ad wasn't ready")
  }
}

Objective-C

- (IBAction)doSomething:(id)sender {
  ...
  if (self.interstitial) {
    [self.interstitial presentFromRootViewController:self];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

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

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

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

ตัวอย่างใน GitHub

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

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

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

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