ตั้งค่าโฆษณาแบนเนอร์

เลือกแพลตฟอร์ม: Android iOS Unity Flutter Android (เดิม)

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

คู่มือนี้ครอบคลุมการโหลดโฆษณาแบนเนอร์แบบปรับขนาดได้ที่ยึดตำแหน่งไว้ลงในแอป 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

  1. รวมโฟลเดอร์ JetpackCompose Utilities โฟลเดอร์นี้มีตัวช่วยในการเขียนออบเจ็กต์และชิ้นงาน AdView

  2. วิธีเขียน 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)

เพิ่ม 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() }
}

เหตุการณ์โฆษณา

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

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 ปลายทางของโฆษณา แอปของคุณสามารถใช้เพื่อทำกิจกรรมที่ถูกระงับต่อหรือ ทำงานอื่นๆ ที่จำเป็นเพื่อให้พร้อมสำหรับการโต้ตอบ ดูการติดตั้งใช้งานเมธอดเครื่องมือฟังเหตุการณ์โฆษณาใน แอป Android API Demo ได้ที่ตัวอย่าง 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>

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

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

แบนเนอร์แบบยุบได้

โฆษณาแบนเนอร์แบบยุบได้คือโฆษณาแบนเนอร์ที่แสดงเป็นโฆษณาซ้อนทับขนาดใหญ่ในตอนแรก โดยมีปุ่มสำหรับยุบโฆษณาให้มีขนาดเล็กลง ลองใช้เพื่อเพิ่มประสิทธิภาพให้ดียิ่งขึ้น ดูรายละเอียดเพิ่มเติมได้ที่โฆษณาแบนเนอร์แบบยุบได้

แบนเนอร์แบบปรับขนาดได้ที่แทรกในบรรทัด

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

ดูหัวข้ออื่นๆ