โฆษณาคั่นระหว่างหน้าเป็นโฆษณาแบบเต็มหน้าจอที่ครอบคลุมอินเทอร์เฟซของแอปโฮสต์ โดยมักจะแสดงที่จุดเปลี่ยนหน้าปกติในขณะที่ใช้งานแอป เช่น ระหว่างดำเนินกิจกรรมต่างๆ หรือในช่วงหยุดชั่วคราวระหว่างเปลี่ยนด่านในเกม เมื่อแอปแสดงโฆษณาคั่นระหว่างหน้า ผู้ใช้จะมีตัวเลือกในการแตะโฆษณาและไปยังปลายทาง หรือปิดโฆษณาและกลับไปที่แอป โปรดอ่านกรณีศึกษาของเรา
คู่มือนี้อธิบายวิธีผสานรวมโฆษณาคั่นระหว่างหน้าเข้ากับแอป Android
ข้อกำหนดเบื้องต้น
ทดสอบด้วยโฆษณาทดสอบเสมอ
เมื่อสร้างและทดสอบแอป โปรดใช้โฆษณาทดสอบแทนโฆษณาจริง หากไม่ปฏิบัติตามอาจทำให้บัญชีถูกระงับ
วิธีที่ง่ายที่สุดในการโหลดโฆษณาทดสอบคือการใช้รหัสหน่วยโฆษณาทดสอบเฉพาะสำหรับโฆษณาคั่นระหว่างหน้าของ Android ดังนี้
ca-app-pub-3940256099942544/1033173712
ซึ่งได้รับการกำหนดค่าเป็นพิเศษให้แสดงโฆษณาทดสอบสำหรับทุกคำขอ และคุณสามารถใช้รหัสนี้ในแอปของคุณเองได้อย่างอิสระขณะเขียนโค้ด ทดสอบ และแก้ไขข้อบกพร่อง เพียงตรวจสอบว่าคุณได้แทนที่รหัสนี้ด้วยรหัสหน่วยโฆษณาของคุณเองก่อนเผยแพร่แอป
ดูรายละเอียดเกี่ยวกับโฆษณาทดสอบของ GMA Next-Gen SDK ได้ที่ หัวข้อเปิดใช้โฆษณาทดสอบ
โหลดโฆษณา
GMA Next-Gen SDK มีตัวเลือกต่อไปนี้สำหรับการโหลดโฆษณา
โหลดด้วย API การโหลดโฆษณาเดียว
โหลดด้วย API การโหลดโฆษณาล่วงหน้า ซึ่งช่วยลด ความจำเป็นในการโหลดและแคชโฆษณาด้วยตนเอง
โหลดด้วย API การโหลดโฆษณาเดียว
ตัวอย่างต่อไปนี้แสดงวิธีโหลดโฆษณาเดียว
Kotlin
import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback
import com.google.android.libraries.ads.mobile.sdk.common.AdRequest
import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAd
import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAdEventCallback
import com.google.android.libraries.ads.mobile.sdk.MobileAds
class InterstitialActivity : Activity() {
private var interstitialAd: InterstitialAd? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Load ads after you initialize GMA Next-Gen SDK.
InterstitialAd.load(
AdRequest.Builder(AD_UNIT_ID).build(),
object : AdLoadCallback<InterstitialAd> {
override fun onAdLoaded(ad: InterstitialAd) {
// Interstitial ad loaded.
interstitialAd = ad
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// Interstitial ad failed to load.
interstitialAd = null
}
},
)
}
companion object {
// Sample interstitial ad unit ID.
const val AD_UNIT_ID = "ca-app-pub-3940256099942544/1033173712"
}
}
Java
import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback;
import com.google.android.libraries.ads.mobile.sdk.common.AdRequest;
import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError;
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError;
import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAd;
import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAdEventCallback;
import com.google.android.libraries.ads.mobile.sdk.MobileAds;
class InterstitialActivity extends Activity {
// Sample interstitial ad unit ID.
private static final String AD_UNIT_ID = "ca-app-pub-3940256099942544/1033173712";
private InterstitialAd interstitialAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load ads after you initialize GMA Next-Gen SDK.
InterstitialAd.load(
new AdRequest.Builder(AD_UNIT_ID).build(),
new AdLoadCallback<InterstitialAd>() {
@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
// Interstitial ad loaded.
AdLoadCallback.super.onAdLoaded(interstitialAd);
InterstitialActivity.this.interstitialAd = interstitialAd;
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError adError) {
// Interstitial ad failed to load.
AdLoadCallback.super.onAdFailedToLoad(adError);
interstitialAd = null;
}
}
);
}
}
โหลดด้วย API การโหลดโฆษณาล่วงหน้า
หากต้องการเริ่มโหลดล่วงหน้า ให้ทำดังนี้
เริ่มต้นการกำหนดค่าการโหลดล่วงหน้าด้วยคำขอโฆษณา
เริ่มตัวโหลดล่วงหน้าสำหรับโฆษณาคั่นระหว่างหน้าด้วยรหัสหน่วยโฆษณาและการกำหนดค่าการโหลดล่วงหน้า
Kotlin
private fun startPreloading(adUnitId: String) {
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitId, preloadConfig)
}
Java
private void startPreloading(String adUnitId) {
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig);
}
โฆษณาจะพร้อมใช้งานอย่างต่อเนื่องเมื่อคุณแสดงโฆษณา ตัวอย่างต่อไปนี้แสดงวิธีโพลโฆษณาจากตัวโหลดล่วงหน้า
Kotlin
// Polling returns the next available ad and loads another ad in the background.
val ad = InterstitialAdPreloader.pollAd(adUnitId)
Java
// Polling returns the next available ad and loads another ad in the background.
final InterstitialAd ad = InterstitialAdPreloader.pollAd(adUnitId);
ตั้งค่า InterstitialAdEventCallback
InterstitialAdEventCallback จะจัดการเหตุการณ์ที่เกี่ยวข้องกับการแสดง
InterstitialAd โปรดตั้งค่าการเรียกกลับก่อนแสดงโฆษณาคั่นระหว่างหน้า
Kotlin
// Listen for ad events.
interstitialAd?.adEventCallback =
object : InterstitialAdEventCallback {
override fun onAdShowedFullScreenContent() {
// Interstitial ad did show.
}
override fun onAdDismissedFullScreenContent() {
// Interstitial ad did dismiss.
interstitialAd = null
}
override fun onAdFailedToShowFullScreenContent(
fullScreenContentError: FullScreenContentError
) {
// Interstitial ad failed to show.
interstitialAd = null
}
override fun onAdImpression() {
// Interstitial ad did record an impression.
}
override fun onAdClicked() {
// Interstitial ad did record a click.
}
}
Java
// Listen for ad events.
interstitialAd.setAdEventCallback(
new InterstitialAdEventCallback() {
@Override
public void onAdShowedFullScreenContent() {
// Interstitial ad did show.
InterstitialAdEventCallback.super.onAdShowedFullScreenContent();
}
@Override
public void onAdDismissedFullScreenContent() {
// Interstitial ad did dismiss.
InterstitialAdEventCallback.super.onAdDismissedFullScreenContent();
interstitialAd = null;
}
@Override
public void onAdFailedToShowFullScreenContent(
@NonNull FullScreenContentError fullScreenContentError) {
// Interstitial ad failed to show.
InterstitialAdEventCallback.super.onAdFailedToShowFullScreenContent(
fullScreenContentError);
initerstitialAd = null;
}
@Override
public void onAdImpression() {
// Interstitial ad did record an impression.
InterstitialAdEventCallback.super.onAdImpression();
}
@Override
public void onAdClicked() {
// Interstitial ad did record a click.
InterstitialAdEventCallback.super.onAdClicked();
}
}
);
แสดงโฆษณา
หากต้องการแสดงโฆษณาคั่นระหว่างหน้า ให้ใช้เมธอด show()
Kotlin
// Show the ad.
interstitialAd?.show(this@InterstitialActivity)
Java
// Show the ad.
interstitialAd.show(InterstitialActivity.this);
แนวทางปฏิบัติแนะนำบางส่วน
- พิจารณาว่าโฆษณาคั่นระหว่างหน้าเป็นโฆษณาประเภทที่เหมาะสมกับแอปของคุณหรือไม่
- โฆษณาคั่นระหว่างหน้าทำงานได้ดีที่สุดในแอปที่มีจุดเปลี่ยนหน้าปกติ การสิ้นสุดงานภายในแอป เช่น การแชร์รูปภาพหรือการผ่านด่านในเกม จะสร้างจุดเปลี่ยนหน้าดังกล่าว โปรดพิจารณาว่าคุณจะแสดงโฆษณาคั่นระหว่างหน้าในขั้นตอนใดของเวิร์กโฟลว์ของแอป และผู้ใช้มีแนวโน้มที่จะตอบสนองอย่างไร
- อย่าลืมหยุดการดำเนินการชั่วคราวเมื่อแสดงโฆษณาคั่นระหว่างหน้า
- โฆษณาคั่นระหว่างหน้ามีหลายประเภท ได้แก่ แบบข้อความ รูปภาพ วิดีโอ และอื่นๆ คุณควรตรวจสอบว่าเมื่อแอปแสดงโฆษณาคั่นระหว่างหน้า แอปจะระงับการใช้ทรัพยากรบางอย่างด้วย เพื่อให้โฆษณาสามารถใช้ประโยชน์จากทรัพยากรเหล่านั้นได้ เช่น เมื่อเรียกให้แสดงโฆษณาคั่นระหว่างหน้า ให้หยุดเอาต์พุตเสียงที่แอปสร้างขึ้นชั่วคราว
- เผื่อเวลาโหลดที่เพียงพอ
- เช่นเดียวกับการแสดงโฆษณาคั่นระหว่างหน้าในเวลาที่เหมาะสม คุณควรตรวจสอบว่าผู้ใช้ไม่ต้องรอให้โฆษณาโหลด การโหลดโฆษณาล่วงหน้าโดยเรียก
load()ก่อนที่จะเรียกshow()จะช่วยให้แอปมีโฆษณาคั่นระหว่างหน้าที่โหลดเสร็จสมบูรณ์พร้อมแสดงเมื่อถึงเวลา - อย่าแสดงโฆษณาให้ผู้ใช้เห็นมากเกินไป
- แม้การแสดงโฆษณาคั่นระหว่างหน้าถี่ขึ้นในแอปอาจเป็นวิธีเพิ่มรายได้ที่ดี แต่อาจทำให้ประสบการณ์ของผู้ใช้แย่ลงและลดอัตราการคลิกผ่าน ตรวจสอบว่าผู้ใช้ไม่ถูกขัดจังหวะบ่อยเกินไปจนไม่สามารถเพลิดเพลินกับการใช้แอปของคุณได้
ตัวอย่าง
ดาวน์โหลดและเรียกใช้แอปตัวอย่างที่แสดงการใช้ GMA Next-Gen SDK