โฆษณาคั่นระหว่างหน้าคือโฆษณาแบบเต็มหน้าจอที่บดบังอินเทอร์เฟซของแอปจนกว่าผู้ใช้จะปิด โดยปกติจะแสดงที่จุดเปลี่ยนหน้าปกติในขณะที่ใช้งานแอป เช่น ระหว่างทำกิจกรรมหรือในช่วงหยุดชั่วคราวระหว่างด่านต่างๆ ในเกม เมื่อแอปแสดงโฆษณาคั่นระหว่างหน้า ผู้ใช้สามารถเลือกที่จะแตะโฆษณาแล้วไปยังปลายทาง หรือปิดแล้วกลับไปยังแอปก็ได้ กรณีศึกษา
คู่มือนี้แสดงวิธีผสานรวมโฆษณาคั่นระหว่างหน้ากับแอป iOS
ข้อกำหนดเบื้องต้น
- SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google เวอร์ชัน 8.0.0 ขึ้นไป
- ทำตามคู่มือเริ่มต้นใช้งาน
ทดสอบด้วยโฆษณาทดสอบเสมอ
เมื่อสร้างและทดสอบแอป ให้ตรวจสอบว่าคุณใช้โฆษณาทดสอบแทนที่จะใช้โฆษณาเวอร์ชันที่ใช้งานจริง มิเช่นนั้นจะถูกระงับบัญชี
วิธีที่ง่ายที่สุดในการโหลดโฆษณาทดสอบคือการใช้รหัสหน่วยโฆษณาทดสอบสำหรับโฆษณาคั่นระหว่างหน้าของ iOS โดยเฉพาะ ดังนี้
ca-app-pub-3940256099942544/4411468910
โดยได้รับการกำหนดค่ามาเป็นพิเศษให้ส่งคืนโฆษณาทดสอบสำหรับทุกคำขอ และคุณจะใช้บัญชีนี้ในแอปของคุณเองได้อย่างอิสระขณะเขียนโค้ด ทดสอบ และแก้ไขข้อบกพร่อง แต่อย่าลืมแทนที่ด้วยรหัสหน่วยโฆษณาของคุณเองก่อนที่จะเผยแพร่แอป
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของโฆษณาทดสอบของ SDK โฆษณาในอุปกรณ์เคลื่อนที่ได้ที่ทดสอบโฆษณา
การใช้งาน
ขั้นตอนหลักในการผสานรวมโฆษณาคั่นระหว่างหน้ามีดังนี้
- โหลดโฆษณา
- ลงทะเบียนเพื่อให้โทรกลับ
- แสดงโฆษณาและจัดการกิจกรรมรางวัล
โหลดโฆษณา
การโหลดโฆษณาทำได้โดยใช้เมธอด 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
จะจัดการกับโค้ดเรียกกลับในกรณีที่โฆษณาแสดงผลสำเร็จหรือไม่สำเร็จ และปิดโฆษณาดังกล่าว โค้ดต่อไปนี้แสดงวิธีการใช้โปรโตคอลและกำหนดให้กับโฆษณา
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) ชั่วคราวขณะที่แสดงโฆษณาอยู่ วิธีนี้จะช่วยให้มั่นใจได้ว่าผู้ใช้จะไม่พบปัญหากราฟิกที่ช้าหรือไม่ตอบสนอง หรือวิดีโอกระตุก - เผื่อไว้สำหรับเวลาโหลดที่มากพอ
- สิ่งที่สำคัญอีกอย่างการได้แสดงโฆษณาคั่นระหว่างหน้าในเวลาที่เหมาะสมก็สำคัญเช่นกัน จะทำให้ผู้ใช้ไม่ต้องรอให้โฆษณาโหลดเสร็จ การโหลดโฆษณาไว้ล่วงหน้าก่อนที่คุณจะตั้งใจจะแสดงจะช่วยให้แอปมีโฆษณาคั่นระหว่างหน้าที่โหลดขึ้นมาอย่างสมบูรณ์และพร้อมแสดงเมื่อถึงเวลาแสดงโฆษณา
- อย่าแสดงโฆษณาต่อผู้ใช้มากเกินไป
- แม้ว่าการเพิ่มความถี่ของโฆษณาคั่นระหว่างหน้าในแอปอาจดู เป็นวิธีเพิ่มรายได้ที่ดี แต่ก็อาจทําให้ประสบการณ์ของผู้ใช้แย่ลงและอัตราการคลิกผ่านลดลงด้วย ดูแลไม่ให้ผู้ใช้ถูกรบกวนบ่อยๆ จนใช้แอปของคุณไม่ได้อีกต่อไป
- อย่าใช้โค้ดเรียกกลับที่เสร็จสิ้นการโหลดเพื่อแสดงโฆษณาคั่นระหว่างหน้า
- การดำเนินการนี้อาจทำให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ไม่ดี แต่ให้โหลดโฆษณาไว้ล่วงหน้า
ก่อนที่จะต้องแสดง จากนั้นตรวจสอบเมธอด
canPresentFromRootViewController:error:
ในGADInterstitialAd
เพื่อดูว่าเมธอดดังกล่าวพร้อมแสดงหรือไม่
แหล่งข้อมูลเพิ่มเติม
ตัวอย่างใน GitHub
- ตัวอย่างโฆษณาคั่นระหว่างหน้า: Swift | Objective-C
บทแนะนำแบบวิดีโอเกี่ยวกับ Mobile Ads Garage
เรื่องราวความสำเร็จ
ขั้นตอนถัดไป
- สร้างหน่วยโฆษณาคั่นระหว่างหน้าของคุณเองใน UI ของ AdMob หากยังไม่ได้สร้าง
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดเป้าหมายโฆษณาและหลักเกณฑ์โฆษณาคั่นระหว่างหน้า * ดูข้อมูลเพิ่มเติมเกี่ยวกับความเป็นส่วนตัวของผู้ใช้