แบนเนอร์โฆษณา

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

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

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

ข้อกำหนดเบื้องต้น

ทดสอบด้วยโฆษณาทดสอบเสมอ

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

วิธีที่ง่ายที่สุดในการโหลดโฆษณาทดสอบคือการใช้รหัสหน่วยโฆษณาทดสอบสำหรับแบนเนอร์ Android โดยเฉพาะ

ca-app-pub-3940256099942544/9214589741

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

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

เพิ่ม AdView ลงในเลย์เอาต์

ขั้นตอนแรกในการแสดงแบนเนอร์คือการวาง AdView ในเลย์เอาต์สำหรับ Activity หรือ Fragment ที่ต้องการแสดง

Java

private AdSize getAdSize() {
  // Determine the screen width (less decorations) to use for the ad width.
  Display display = getWindowManager().getDefaultDisplay();
  DisplayMetrics outMetrics = new DisplayMetrics();
  display.getMetrics(outMetrics);

  float density = outMetrics.density;

  float adWidthPixels = adContainerView.getWidth();

  // If the ad hasn't been laid out, default to the full screen width.
  if (adWidthPixels == 0) {
    adWidthPixels = outMetrics.widthPixels;
  }

  int adWidth = (int) (adWidthPixels / density);
  return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
}

private void loadBanner() {
  
  // Create a new ad view.
  AdView adView = new AdView(this);
  adView.setAdSizes(getAdSize());
  adView.setAdUnitId("ca-app-pub-3940256099942544/9214589741");

  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

  // Start loading the ad in the background.
  AdRequest adRequest = new AdRequest.Builder().build();
  adView.loadAd(adRequest);
}

Kotlin


// Determine the screen width (less decorations) to use for the ad width.
// If the ad hasn't been laid out, default to the full screen width.
private val adSize: AdSize
  get() {
    val display = windowManager.defaultDisplay
    val outMetrics = DisplayMetrics()
    display.getMetrics(outMetrics)

    val density = outMetrics.density

    var adWidthPixels = binding.adViewContainer.width.toFloat()
    if (adWidthPixels == 0f) {
      adWidthPixels = outMetrics.widthPixels.toFloat()
    }

    val adWidth = (adWidthPixels / density).toInt()
    return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
  }

private fun loadBanner() {
  
  // Create a new ad view.
  val adView = AdView(this)
  adView.adSizes = adSize
  adView.adUnitId = "ca-app-pub-3940256099942544/9214589741"

  // Create an ad request.
  val adRequest = AdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

โหลดโฆษณา

เมื่อ AdView พร้อมแล้ว ขั้นตอนต่อไปคือการโหลดโฆษณา โดยใช้เมธอด loadAd() ในคลาส AdView โดยใช้พารามิเตอร์ AdRequest ที่เก็บข้อมูลรันไทม์ เช่น ข้อมูลการกำหนดเป้าหมาย เกี่ยวกับคำขอโฆษณาเดียว

ตัวอย่างแสดงวิธีโหลดโฆษณาในเมธอด onCreate() ของ Activity

Java

private void loadBanner() {
  // Create a new ad view.
  adView = new AdView(this);
  adView.setAdUnitId(AD_UNIT);
  adView.setAdSize(getAdSize());
  
  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

  // Start loading the ad in the background.
  AdRequest adRequest = new AdRequest.Builder().build();
  adView.loadAd(adRequest);
}

Kotlin

private fun loadBanner() {
  // This is an ad unit ID for a test ad. Replace with your own banner ad unit ID.
  adView.adUnitId = "/6499/example/banner"
  adView.setAdSize(adSize)
  
  // Create an ad request.
  val adRequest = AdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

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

เท่านี้ก็เรียบร้อย แอปของคุณพร้อมแสดงโฆษณาแบนเนอร์แล้ว

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

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

หากต้องการใช้ AdListener กับ AdView ให้เรียกใช้เมธอด setAdListener():

Java

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(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 ของ AdMob สำหรับการติดตั้งใช้งานเมธอด Listener โฆษณาในแอปเดโม Android API
onAdFailedToLoad() เมธอด onAdFailedToLoad() เป็นวิธีเดียวที่มีพารามิเตอร์ พารามิเตอร์ข้อผิดพลาดประเภท LoadAdError อธิบายข้อผิดพลาดที่เกิดขึ้น ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบการแก้ไขข้อบกพร่องของข้อผิดพลาดในการโหลดโฆษณา
onAdImpression() ระบบจะเรียกใช้เมธอด onAdImpression() เมื่อมีการบันทึกการแสดงผลสำหรับโฆษณา
onAdLoaded() ระบบจะเรียกใช้เมธอด onAdLoaded() เมื่อโฆษณาโหลดเสร็จแล้ว หากต้องการเลื่อนเวลาเพิ่ม AdView ลงในกิจกรรมหรือส่วนย่อยจนกว่าจะแน่ใจว่าโฆษณาจะโหลด ก็ทำได้ที่นี่
onAdOpened() ระบบจะเรียกใช้เมธอด onAdOpened() เมื่อโฆษณาเปิดโฆษณาซ้อนทับที่บดบังหน้าจอ

การเร่งฮาร์ดแวร์สำหรับโฆษณาวิดีโอ

หากต้องการให้โฆษณาวิดีโอแสดงในมุมมองโฆษณาแบนเนอร์ได้สำเร็จ คุณต้องเปิดใช้การเร่งความเร็วด้วยฮาร์ดแวร์

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

การเปิดใช้การเร่งฮาร์ดแวร์

หากแอปทำงานผิดปกติเมื่อเปิดการเร่งฮาร์ดแวร์ไว้ทั่วโลก คุณจะควบคุมแอปสำหรับแต่ละกิจกรรมได้เช่นกัน หากต้องการเปิดหรือปิดใช้การเร่งฮาร์ดแวร์ คุณสามารถใช้แอตทริบิวต์ android:hardwareAccelerated สำหรับองค์ประกอบ <application> และ <activity> ใน AndroidManifest.xml ตัวอย่างต่อไปนี้เปิดใช้การเร่งฮาร์ดแวร์ สำหรับทั้งแอป แต่ปิดใช้ 1 กิจกรรม

<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>

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

แหล่งข้อมูลเพิ่มเติม

ตัวอย่างใน GitHub

  • ตัวอย่างโฆษณาแบนเนอร์แบบปรับขนาดได้แบบโฆษณา Anchor: Java | Kotlin
  • การสาธิตฟีเจอร์ขั้นสูง: Java | Kotlin

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

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

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

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

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

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