คู่มือนี้ครอบคลุมการโหลดโฆษณาแบนเนอร์แบบปรับขนาดได้ที่ยึดตำแหน่งไว้ลงในแอป Android
ข้อกำหนดเบื้องต้น
- ตั้งค่า Google Mobile Ads SDK (Legacy)
- ไม่บังคับ: หากต้องการดูตัวอย่างการติดตั้งใช้งานโฆษณาแบนเนอร์ ให้เลือกแอปตัวอย่างรายการใดรายการหนึ่งต่อไปนี้
- ตัวอย่างโฆษณาแบนเนอร์แบบปรับขนาดได้ที่ยึดตำแหน่งไว้ใน Java, Kotlin หรือ Jetpack Compose
- การสาธิตฟีเจอร์ขั้นสูงของ Java หรือ Kotlin
ทดสอบด้วยโฆษณาทดสอบเสมอ
เมื่อสร้างและทดสอบแอป โปรดใช้โฆษณาทดสอบแทนโฆษณาจริงที่ใช้งานจริง หากไม่ดำเนินการดังกล่าว อาจส่งผลให้บัญชีถูกระงับ
วิธีที่ง่ายที่สุดในการโหลดโฆษณาทดสอบคือการใช้รหัสหน่วยโฆษณาทดสอบเฉพาะสำหรับแบนเนอร์ Android ดังนี้
ca-app-pub-3940256099942544/9214589741
ซึ่งได้รับการกำหนดค่าเป็นพิเศษให้แสดงโฆษณาทดสอบสำหรับทุกคำขอ และคุณสามารถใช้ในแอปของคุณเองขณะเขียนโค้ด ทดสอบ และแก้ไขข้อบกพร่องได้ อย่าลืมแทนที่ด้วยรหัสหน่วยโฆษณาของคุณเองก่อนเผยแพร่แอป
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของโฆษณาทดสอบของ Google Mobile Ads SDK (Legacy) ได้ที่เปิดใช้โฆษณาทดสอบ
กำหนดมุมมองโฆษณา
เลย์เอาต์ XML
เพิ่มมุมมองลงในไฟล์ XML ของเลย์เอาต์เพื่อใช้เป็นคอนเทนเนอร์สำหรับโฆษณาแบนเนอร์แบบปรับขนาดได้ที่ยึดตำแหน่งไว้
<!-- Ad view container that fills the width of the screen and adjusts its
height to the content of the ad. -->
<FrameLayout
android:id="@+id/ad_view_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_alignParentBottom="true" />
Jetpack Compose
รวมโฟลเดอร์ JetpackCompose Utilities โฟลเดอร์นี้มีตัวช่วยในการเขียนออบเจ็กต์และชิ้นงาน
AdViewเขียน
AdView:
// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
Box(modifier = modifier.fillMaxWidth()) { BannerAd(adView, modifier) }
}
กำหนดขนาดโฆษณา
แบนเนอร์แบบปรับขนาดได้ขนาดใหญ่มีรูปแบบที่ใหญ่ขึ้นซึ่งออกแบบมาสำหรับเลย์เอาต์แบบไม่เลื่อน เมื่อเทียบกับแบนเนอร์แบบปรับขนาดได้ที่ยึดตำแหน่งไว้แบบมาตรฐาน แบนเนอร์เหล่านี้จะมีความสูงสูงสุดที่สูงกว่า โดยสูงได้ถึง 20% ของความสูงของหน้าจอ และอยู่ระหว่าง 50 ถึง 150dp พื้นที่ที่เพิ่มขึ้นนี้ได้รับการเพิ่มประสิทธิภาพสำหรับเนื้อหาวิดีโอ
ตั้งค่า AdSize เป็นประเภทแบนเนอร์แบบปรับขนาดได้ที่ยึดตำแหน่งไว้โดยมีความกว้างที่ระบุ ดังนี้
Java
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360));
Kotlin
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360))
Jetpack Compose
// Set a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)
กำหนดขนาดโฆษณาให้เล็กกว่าหรือเท่ากับขนาดหน้าจอของอุปกรณ์
หากต้องการกำหนดขนาดหน้าจอสูงสุด ให้ใช้เมธอด Resources.getDisplayMetrics ขนาดออบเจ็กต์ AdSize ใช้ความหนาแน่นของพิกเซลอิสระ (dp) เมื่อเปรียบเทียบ ให้แปลงขนาดหน้าจอจากพิกเซลเป็น dp
ดูรายละเอียดเกี่ยวกับข้อจำกัดด้านขนาดได้ที่ข้อกำหนดด้านขนาดของคำขอโฆษณา
เพิ่ม AdView ลงในเลย์เอาต์
สร้าง AdView โดยใช้ขนาดโฆษณาเพื่อเพิ่มลงในเลย์เอาต์ของแอป ดังนี้
Java
// Create a new ad view.
adView = new AdView(this);
adView.setAdUnitId(AD_UNIT_ID);
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360));
// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);
Kotlin
// Create a new ad view.
val adView = AdView(this)
adView.adUnitId = AD_UNIT_ID
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360))
this.adView = adView
// Replace ad container with new ad view.
binding.adViewContainer.removeAllViews()
binding.adViewContainer.addView(adView)
Jetpack Compose
val adView = remember { AdView(context) }
// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = BANNER_AD_UNIT_ID
// Set a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)
// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
Box(modifier = modifier.fillMaxWidth()) { BannerAd(adView, modifier) }
}
โหลดโฆษณา
ตัวอย่างต่อไปนี้จะโหลดโฆษณาแบนเนอร์แบบปรับขนาดได้ที่ยึดตำแหน่งไว้ซึ่งมีความกว้าง 360 ลงในออบเจ็กต์ AdView
Java
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
Kotlin
val adRequest = AdRequest.Builder().build()
adView.loadAd(adRequest)
รีเฟรชโฆษณา
หากคุณกำหนดค่าหน่วยโฆษณาให้รีเฟรช คุณไม่จำเป็นต้องขอโฆษณาอื่นเมื่อโฆษณาโหลดไม่สำเร็จ Google Mobile Ads SDK (Legacy) จะยึดตามอัตราการรีเฟรชที่คุณระบุไว้ใน UI ของ AdMob หากคุณไม่ได้เปิดใช้การรีเฟรช ให้ส่งคำขอใหม่ ดูรายละเอียดเพิ่มเติมเกี่ยวกับการรีเฟรชหน่วยโฆษณา เช่น การตั้งค่าอัตราการรีเฟรชได้ที่ใช้การรีเฟรชอัตโนมัติสําหรับโฆษณาแบนเนอร์
เผยแพร่ทรัพยากรโฆษณา
เมื่อใช้โฆษณาแบนเนอร์เสร็จแล้ว คุณสามารถปล่อยทรัพยากรของโฆษณาแบนเนอร์ได้
หากต้องการปล่อยทรัพยากรของโฆษณา ให้นำโฆษณาออกจากลำดับชั้นการแสดงผลและยกเลิกการอ้างอิงทั้งหมด ดังนี้
Java
public void destroyBanner() {
// Remove banner from view hierarchy.
if (adView != null) {
View parentView = (View) adView.getParent();
if (parentView instanceof ViewGroup) {
((ViewGroup) parentView).removeView(adView);
}
// Destroy the banner ad resources.
adView.destroy();
}
// Drop reference to the banner ad.
adView = null;
}
Kotlin
fun destroyBanner() {
// Remove banner from view hierarchy.
val parentView = adView?.parent
if (parentView is ViewGroup) {
parentView.removeView(adView)
}
// Destroy the banner ad resources.
adView?.destroy()
// Drop reference to the banner ad.
adView = null
}
Jetpack Compose
DisposableEffect(Unit) {
// Destroy the AdView to prevent memory leaks when the screen is disposed.
onDispose { adView.destroy() }
}
เหตุการณ์โฆษณา
คุณสามารถฟังเหตุการณ์ต่างๆ ในวงจรของโฆษณาได้ ซึ่งรวมถึงการโหลด การแสดงโฆษณาและการคลิก ตลอดจนเหตุการณ์การเปิดและปิดโฆษณา เราขอแนะนำให้ตั้งค่า Callback ก่อนโหลดแบนเนอร์
Java
if (adView != null) {
adView.setAdListener(
new AdListener() {
@Override
public void onAdClicked() {
// Code to be executed when the user clicks on an ad.
}
@Override
public void onAdClosed() {
// Code to be executed when the user is about to return
// to the app after tapping on an ad.
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError adError) {
// Code to be executed when an ad request fails.
}
@Override
public void onAdImpression() {
// Code to be executed when an impression is recorded
// for an ad.
}
@Override
public void onAdLoaded() {
// Code to be executed when an ad finishes loading.
}
@Override
public void onAdOpened() {
// Code to be executed when an ad opens an overlay that
// covers the screen.
}
});
}
Kotlin
adView?.adListener =
object : AdListener() {
override fun onAdClicked() {
// Code to be executed when the user clicks on an ad.
}
override fun onAdClosed() {
// Code to be executed when the user is about to return
// to the app after tapping on an ad.
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// Code to be executed when an ad request fails.
}
override fun onAdImpression() {
// Code to be executed when an impression is recorded
// for an ad.
}
override fun onAdLoaded() {
// Code to be executed when an ad finishes loading.
}
override fun onAdOpened() {
// Code to be executed when an ad opens an overlay that
// covers the screen.
}
}
เมธอดที่ลบล้างได้แต่ละเมธอดใน AdListener จะสอดคล้องกับเหตุการณ์ในวงจรของโฆษณา
| เมธอดที่ลบล้างได้ | |
|---|---|
onAdClicked() |
ระบบจะเรียกใช้เมธอด onAdClicked() เมื่อมีการบันทึกการคลิกโฆษณา
|
onAdClosed() |
ระบบจะเรียกใช้เมธอด onAdClosed() เมื่อผู้ใช้กลับมาที่แอปหลังจากดู URL ปลายทางของโฆษณา แอปของคุณสามารถใช้เมธอดนี้เพื่อกลับมาทำกิจกรรมที่ถูกระงับไว้ต่อ หรือทำงานอื่นๆ ที่จำเป็นเพื่อให้พร้อมสำหรับการโต้ตอบ
ดูการใช้งานเมธอด AdListener ในแอปเดโม Android API ได้ที่ตัวอย่าง AdListener ของ AdMob
|
onAdFailedToLoad() |
เมธอด onAdFailedToLoad() เป็นเมธอดเดียวที่มีพารามิเตอร์ พารามิเตอร์ข้อผิดพลาดของประเภท LoadAdError จะอธิบายข้อผิดพลาดที่เกิดขึ้น ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับการแก้ไขข้อผิดพลาดในการโหลดโฆษณา
|
onAdImpression() |
ระบบจะเรียกใช้เมธอด onAdImpression() เมื่อมีการบันทึกการแสดงผลของโฆษณา
|
onAdLoaded() |
ระบบจะเรียกใช้เมธอด onAdLoaded() เมื่อโฆษณาโหลดเสร็จแล้ว หากต้องการเลื่อนการเพิ่ม AdView ลงในกิจกรรมหรือ Fragment จนกว่าจะแน่ใจว่าโฆษณาจะโหลด คุณสามารถทำได้ที่นี่
|
onAdOpened() |
ระบบจะเรียกใช้เมธอด onAdOpened() เมื่อโฆษณาเปิดโฆษณาซ้อนทับที่ครอบคลุมหน้าจอ
|
การเร่งฮาร์ดแวร์สำหรับโฆษณาวิดีโอ
คุณต้องเปิดใช้การเร่งฮาร์ดแวร์เพื่อให้โฆษณาวิดีโอแสดงในมุมมองโฆษณาแบนเนอร์ได้สำเร็จ
การเร่งฮาร์ดแวร์จะเปิดใช้โดยค่าเริ่มต้น แต่บางแอปอาจเลือกปิดใช้ หากแอปของคุณเป็นเช่นนี้ เราขอแนะนำให้เปิดใช้การเร่งฮาร์ดแวร์สำหรับคลาส Activity ที่ใช้โฆษณา
เปิดใช้การเร่งฮาร์ดแวร์
หากแอปทำงานไม่ถูกต้องเมื่อเปิดการเร่งฮาร์ดแวร์ทั่วโลก คุณสามารถควบคุมการเร่งฮาร์ดแวร์สำหรับกิจกรรมแต่ละรายการได้ด้วย หากต้องการเปิดหรือปิดใช้การเร่งฮาร์ดแวร์ คุณสามารถใช้แอตทริบิวต์ android:hardwareAccelerated สำหรับองค์ประกอบ <application> และ <activity> ใน AndroidManifest.xml ตัวอย่างต่อไปนี้เปิดใช้การเร่งฮาร์ดแวร์สำหรับทั้งแอป แต่ปิดใช้สำหรับกิจกรรมเดียว
<application android:hardwareAccelerated="true">
<!-- For activities that use ads, hardwareAcceleration should be true. -->
<activity android:hardwareAccelerated="true" />
<!-- For activities that don't use ads, hardwareAcceleration can be false. -->
<activity android:hardwareAccelerated="false" />
</application>
ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกในการควบคุมการเร่งฮาร์ดแวร์ได้ที่คู่มือการเร่งฮาร์ดแวร์ โปรดทราบว่าคุณไม่สามารถเปิดใช้การเร่งฮาร์ดแวร์สำหรับโฆษณาเดี่ยวแต่ละรายการได้หากกิจกรรมถูกปิดใช้ ดังนั้นกิจกรรมนั้นๆ จะต้องเปิดใช้การเร่งฮาร์ดแวร์
ขั้นตอนถัดไป
แบนเนอร์แบบยุบได้
โฆษณาแบนเนอร์แบบยุบได้คือโฆษณาแบนเนอร์ที่เริ่มแรกจะแสดงเป็นโฆษณาซ้อนทับขนาดใหญ่ โดยมีปุ่มสำหรับยุบโฆษณาให้มีขนาดเล็กลง ลองใช้เพื่อเพิ่มประสิทธิภาพให้ดียิ่งขึ้น ดูรายละเอียดเพิ่มเติมได้ที่โฆษณาแบนเนอร์แบบยุบได้
แบนเนอร์แบบปรับขนาดได้ที่แทรกในบรรทัด
แบนเนอร์แบบปรับขนาดได้ที่แทรกในบรรทัดมีขนาดใหญ่และสูงกว่าแบนเนอร์แบบปรับขนาดได้ที่ยึดตำแหน่งไว้ โดยมีความสูงที่หลากหลาย และอาจสูงเท่ากับหน้าจออุปกรณ์ เราขอแนะนำให้ใช้แบนเนอร์แบบปรับขนาดได้ที่แทรกในบรรทัดแทนโฆษณาแบนเนอร์แบบปรับขนาดได้ที่ยึดตำแหน่งไว้สำหรับแอปที่วางโฆษณาแบนเนอร์ในเนื้อหาที่เลื่อนดูได้ ดูรายละเอียดเพิ่มเติมได้ที่แบนเนอร์แบบปรับขนาดได้ในบรรทัด