โฆษณาคั่นระหว่างหน้าคือโฆษณาแบบเต็มหน้าจอที่ครอบคลุมอินเทอร์เฟซของแอปจนกว่าผู้ใช้จะปิด โฆษณาเหล่านี้มักจะแสดงที่จุดเปลี่ยนหน้าปกติในขณะที่ใช้งานแอป เช่น ระหว่างทำกิจกรรมต่างๆ หรือในช่วงหยุดชั่วคราวระหว่างเปลี่ยนด่านในเกม เมื่อแอปแสดงโฆษณาคั่นระหว่างหน้า ผู้ใช้จะมีตัวเลือกในการแตะโฆษณาเพื่อไปยังปลายทางหรือปิดโฆษณาและกลับไปที่แอป กรณีศึกษา
คู่มือนี้จะแสดงวิธีผสานรวมโฆษณาคั่นระหว่างหน้าเข้ากับแอป iOS
ข้อกำหนดเบื้องต้น
- SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google เวอร์ชัน 8.0.0 ขึ้นไป
- ทำตามคู่มือเริ่มต้นใช้งาน
ทดสอบด้วยโฆษณาทดสอบเสมอ
เมื่อสร้างและทดสอบแอป โปรดใช้โฆษณาทดสอบแทนโฆษณาเวอร์ชันที่ใช้งานจริง หากไม่ดำเนินการดังกล่าวอาจส่งผลให้บัญชีของคุณถูกระงับ
วิธีที่ง่ายที่สุดในการโหลดโฆษณาทดสอบคือการใช้รหัสหน่วยโฆษณาทดสอบเฉพาะของเราสำหรับโฆษณาคั่นระหว่างหน้าของ iOS
/21775744923/example/interstitial
เราได้กําหนดค่าไว้เป็นพิเศษให้แสดงโฆษณาทดสอบสําหรับคําขอทุกรายการ และคุณใช้โฆษณานี้ในแอปของคุณเองได้ขณะเขียนโค้ด ทดสอบ และแก้ไขข้อบกพร่อง เพียงตรวจสอบว่าคุณได้แทนที่รหัสดังกล่าวด้วยรหัสหน่วยโฆษณาของคุณเองก่อนเผยแพร่แอป
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของโฆษณาทดสอบของ Mobile Ads SDK ได้ที่โฆษณาทดสอบ
การใช้งาน
ขั้นตอนหลักในการผสานรวมโฆษณาคั่นระหว่างหน้ามีดังนี้
- โหลดโฆษณา
- ลงทะเบียนรับการติดต่อกลับ
- แสดงโฆษณา
โหลดโฆษณา
การโหลดโฆษณาจะทําได้โดยใช้เมธอด load(adUnitID:request)
ในคลาส GAMInterstitialAd
Swift
fileprivate func loadInterstitial() async {
do {
interstitial = try await AdManagerInterstitialAd.load(
with: "/21775744923/example/interstitial", request: AdManagerRequest())
interstitial?.fullScreenContentDelegate = self
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
SwiftUI
import GoogleMobileAds
class InterstitialViewModel: NSObject, FullScreenContentDelegate {
private var interstitialAd: InterstitialAd?
func loadAd() async {
do {
interstitialAd = try await InterstitialAd.load(
with: "ca-app-pub-3940256099942544/4411468910", request: Request())
interstitialAd?.fullScreenContentDelegate = self
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
Objective-C
[GAMInterstitialAd loadWithAdManagerAdUnitID:@"/21775744923/example/interstitial"
request:[GAMRequest request]
completionHandler:^(GAMInterstitialAd *ad, NSError *error) {
if (error) {
NSLog(@"Failed to load interstitial ad with error: %@",
[error localizedDescription]);
return;
}
self.interstitial = ad;
self.interstitial.fullScreenContentDelegate = self;
}];
ลงทะเบียนเพื่อรับการติดต่อกลับ
หากต้องการรับการแจ้งเตือนสําหรับเหตุการณ์การนําเสนอ คุณต้องกําหนดพร็อพเพอร์ตี้ GADFullScreenContentDelegate to the
fullScreenContentDelegate` ของโฆษณาที่แสดงผล
Swift
interstitial?.fullScreenContentDelegate = self
SwiftUI
interstitialAd?.fullScreenContentDelegate = self
Objective-C
self.interstitial.fullScreenContentDelegate = self;
โปรโตคอล GADFullScreenContentDelegate
จะจัดการการเรียกกลับเมื่อโฆษณาแสดงสำเร็จหรือไม่สำเร็จ และเมื่อโฆษณาถูกปิด โค้ดต่อไปนี้แสดงวิธีใช้โปรโตคอล
Swift
func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func ad(_ ad: FullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
print("\(#function) called with error: \(error.localizedDescription)")
// Clear the interstitial ad.
interstitial = nil
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
// Clear the interstitial ad.
interstitial = nil
}
SwiftUI
func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func ad(
_ ad: FullScreenPresentingAd,
didFailToPresentFullScreenContentWithError error: Error
) {
print("\(#function) called")
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
// Clear the interstitial ad.
interstitialAd = nil
}
Objective-C
- (void)adDidRecordImpression:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adDidRecordClick:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)ad:(id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(NSError *)error {
NSLog(@"%s called with error: %@", __PRETTY_FUNCTION__, error.localizedDescription);
// Clear the interstitial ad.
self.interstitial = nil;
}
- (void)adWillPresentFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adWillDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adDidDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
// Clear the interstitial ad.
self.interstitial = nil;
}
GAMInterstitialAd
ออบเจ็กต์แบบใช้ครั้งเดียว ซึ่งหมายความว่าเมื่อโฆษณาคั่นระหว่างหน้าแสดงแล้ว โฆษณาดังกล่าวจะแสดงไม่ได้อีก แนวทางปฏิบัติแนะนำคือให้โหลดโฆษณาคั่นระหว่างหน้าอีกรายการในadDidDismissFullScreenContent:
method ใน GADFullScreenContentDelegate
เพื่อให้โฆษณาคั่นระหว่างหน้ารายการถัดไปเริ่มโหลดทันทีที่โฆษณาก่อนหน้าถูกปิด
แสดงโฆษณา
โฆษณาคั่นระหว่างหน้าควรแสดงในช่วงหยุดชั่วคราวตามปกติของการใช้งานแอป เช่น ระหว่างด่านของเกม หรือหลังจากที่ผู้ใช้ทำงานเสร็จ
Swift
ad.present(from: self!)
SwiftUI
ฟังเหตุการณ์ UI ในมุมมองเพื่อระบุเวลาที่จะแสดงโฆษณา
var body: some View {
// ...
}
.onChange(of: countdownTimer.isComplete) { newValue in
showGameOverAlert = newValue
}
.alert(isPresented: $showGameOverAlert) {
Alert(
title: Text("Game Over"),
message: Text("You lasted \(countdownTimer.countdownTime) seconds"),
dismissButton: .cancel(
Text("OK"),
action: {
viewModel.showAd()
}))
แสดงโฆษณาคั่นระหว่างหน้าจากโมเดลมุมมอง
func showAd() {
guard let interstitialAd = interstitialAd else {
return print("Ad wasn't ready.")
}
interstitialAd.present(from: nil)
}
Objective-C
[self.interstitial presentFromRootViewController:self];
แนวทางปฏิบัติแนะนำ
- พิจารณาว่าโฆษณาคั่นระหว่างหน้าเป็นประเภทโฆษณาที่เหมาะสมกับแอปของคุณหรือไม่
- โฆษณาคั่นระหว่างหน้ามีประสิทธิภาพดีที่สุดในแอปที่มีจุดเปลี่ยนหน้าตามปกติ การทำงานเสร็จภายในแอป เช่น การแชร์รูปภาพหรือเล่นเกมผ่านด่าน จะสร้างจุดดังกล่าว เนื่องจากผู้ใช้คาดหวังว่าจะมีช่วงพักระหว่างการดำเนินการ คุณจึงแสดงโฆษณาคั่นระหว่างหน้าได้โดยที่ผู้ใช้ไม่รู้สึกขัดจังหวะ อย่าลืมพิจารณาจุดในเวิร์กโฟลว์ของแอปที่จะแสดงโฆษณาคั่นระหว่างหน้า และวิธีที่ผู้ใช้มีแนวโน้มจะตอบสนอง
- อย่าลืมหยุดการดำเนินการชั่วคราวเมื่อแสดงโฆษณาคั่นระหว่างหน้า
- โฆษณาคั่นระหว่างหน้ามีหลายประเภท ได้แก่ แบบข้อความ รูปภาพ วิดีโอ และอื่นๆ สิ่งสำคัญคือเมื่อแอปแสดงโฆษณาคั่นระหว่างหน้า แอปจะต้องระงับการใช้ทรัพยากรบางอย่างเพื่อให้โฆษณาใช้ประโยชน์จากทรัพยากรเหล่านั้นได้ เช่น เมื่อเรียกใช้เพื่อแสดงโฆษณาคั่นระหว่างหน้า อย่าลืมหยุดเอาต์พุตเสียงที่แอปของคุณสร้างขึ้นไว้ชั่วคราว คุณเล่นเสียงต่อได้ในตัวแฮนเดิลเหตุการณ์
adDidDismissFullScreenContent:
ซึ่งจะเรียกใช้เมื่อผู้ใช้โต้ตอบกับโฆษณาเสร็จแล้ว นอกจากนี้ ให้ลองหยุดงานประมวลผลที่ต้องใช้ทรัพยากรมากชั่วคราว (เช่น ลูปเกม) ขณะแสดงโฆษณา วิธีนี้จะช่วยให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ราบรื่น กราฟิกไม่ช้าหรือไม่ตอบสนอง หรือวิดีโอไม่กระตุก - เผื่อเวลาในการโหลดให้เพียงพอ
- การแสดงโฆษณาคั่นระหว่างหน้าในเวลาที่เหมาะสมเป็นสิ่งสําคัญ แต่ผู้ใช้ไม่ควรต้องรอให้โฆษณาโหลด การโหลดโฆษณาล่วงหน้าก่อนที่คุณจะแสดงจะช่วยให้มั่นใจได้ว่าแอปของคุณมีโฆษณาคั่นระหว่างหน้าที่โหลดเสร็จสมบูรณ์แล้วเมื่อถึงเวลาแสดง
- อย่าแสดงโฆษณาต่อผู้ใช้มากเกินไป
- แม้ว่าการเพิ่มความถี่ของโฆษณาคั่นระหว่างหน้าในแอปอาจดูเหมือนเป็นวิธีที่ยอดเยี่ยมในการเพิ่มรายได้ แต่ก็อาจทำให้ประสบการณ์ของผู้ใช้แย่ลงและอัตราการคลิกผ่านลดลงด้วย ตรวจสอบว่าผู้ใช้ไม่ได้รับการขัดจังหวะบ่อยจนทำให้ใช้งานแอปของคุณไม่ได้
- อย่าใช้การเรียกกลับเมื่อโหลดเสร็จสมบูรณ์เพื่อแสดงโฆษณาคั่นระหว่างหน้า
- ซึ่งอาจทำให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ไม่ดี แต่ให้โหลดโฆษณาล่วงหน้าก่อนถึงเวลาที่คุณต้องแสดงโฆษณา จากนั้นตรวจสอบเมธอด
canPresentFromRootViewController:error:
ในGAMInterstitialAd
เพื่อดูว่าพร้อมแสดงแล้วหรือยัง
ตัวอย่างใน GitHub
ดูตัวอย่างโฆษณาคั่นระหว่างหน้าแบบเต็มในภาษาที่ต้องการ
ขั้นตอนถัดไป
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดเป้าหมายโฆษณาและหลักเกณฑ์ของโฆษณาคั่นระหว่างหน้า
- ดูข้อมูลเพิ่มเติมเกี่ยวกับความเป็นส่วนตัวของผู้ใช้