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

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

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

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

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

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

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

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

/6499/example/adaptive-banner

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

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

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

ขั้นตอนแรกในการแสดงแบนเนอร์คือการวาง AdManagerAdView ในการจัดวางสำหรับ 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.
  AdManagerAdView adView = new AdManagerAdView(this);
  adView.setAdSizes(getAdSize());
  adView.setAdUnitId("/6499/example/adaptive-banner");

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

  // Start loading the ad in the background.
  AdManagerAdRequest adRequest = new AdManagerAdRequest.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 = AdManagerAdView(this)
  adView.adSizes = adSize
  adView.adUnitId = "/6499/example/adaptive-banner"

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

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

โหลดโฆษณา

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

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

Java

private void loadBanner() {
  // Create a new ad view.
  adView = new AdManagerAdView(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.
  AdManagerAdRequest adRequest = new AdManagerAdRequest.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 = AdManagerAdRequest.Builder().build()

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

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

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

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

คุณสามารถเฝ้าดูเหตุการณ์จำนวนหนึ่งในวงจรของโฆษณา รวมถึงการโหลด การแสดงโฆษณาและการคลิกโฆษณา รวมถึงเหตุการณ์เปิดและปิดโฆษณา ขอแนะนำให้ใช้ เพื่อกำหนด Callback ก่อนโหลดแบนเนอร์

Java

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

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

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

การนับการแสดงผลด้วยตนเอง

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

คุณสามารถส่งคำสั่ง ping ของการแสดงผลไปยัง Ad Manager ด้วยตนเองได้หากมีกรณีพิเศษ เงื่อนไขว่าควรบันทึกการแสดงผลเมื่อใด ในการดำเนินการนี้ ให้เปิดใช้ AdManagerAdRequestสำหรับการแสดงผลด้วยตนเองก่อนโหลดโฆษณา:

Java

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build();

Kotlin

val adRequest = AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build()

เมื่อคุณพิจารณาว่าโฆษณาแสดงสำเร็จแล้ว และแสดงบนหน้าจอ คุณสามารถบันทึกการแสดงผลด้วยตนเอง โดยทำดังนี้

Java

{ ad_view }.recordManualImpression();

Kotlin

AdManagerAdView.recordManualImpression()

เหตุการณ์ของแอป

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

คุณฟังเหตุการณ์ในแอปที่เจาะจงของ Ad Manager ได้โดยใช้ AppEventListener เหตุการณ์เหล่านี้อาจเกิดขึ้นเมื่อใดก็ได้ในระหว่างวงจรโฆษณา แม้แต่ก่อน โทรหา onAdLoaded()

Java

public interface AppEventListener {
  void onAppEvent(String name, String info);
}

Kotlin

interface AppEventListener {
    fun onAppEvent(name: String, info: String)
}

ระบบจะเรียกใช้ void onAppEvent(String name, String info) เมื่อมีเหตุการณ์ของแอปเกิดขึ้น ในโฆษณา อินเทอร์เฟซนี้สามารถนำไปใช้โดยกิจกรรมที่คุณทำหรืออื่นๆ ออบเจ็กต์:

Java

import com.google.android.gms.ads.admanager.*;

public class BannerExample extends Activity implements AppEventListener {
}

Kotlin

import com.google.android.gms.ads.admanager.*

class BannerExample : Activity(), AppEventListener {
}

และส่งไปยัง AdManagerAdView:

Java

AdManagerAdView.setAppEventListener(this);

Kotlin

AdManagerAdView.appEventListener = this

นี่เป็นตัวอย่างที่แสดงวิธีเปลี่ยนสีพื้นหลังของแอป ขึ้นอยู่กับเหตุการณ์ของแอปที่มีชื่อสี ดังนี้

Java

@Override
public void onAppEvent(String name, String info) {
  if ("color".equals(name)) {
    if ("green".equals(info)) {
      // Set background color to green.
    } else if ("blue".equals(info)) {
      // Set background color to blue.
    } else {
      // Set background color to black.
    }
  }
}

Kotlin

override fun onAppEvent(name: String?, info: String?) {
    if (name == "color") {
        when (info) {
            "green" -> {
                // Set background color to green.
            }
            "blue" -> {
                // Set background color to blue.
            }
            else -> {
                // Set background color to black.
            }
        }
    }
}

และนี่คือครีเอทีฟโฆษณาที่เกี่ยวข้องซึ่งส่งข้อความกิจกรรมของแอปสีไปยัง Listener:

<html>
<head>
  <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      // Send a color=green event when ad loads.
      admob.events.dispatchAppEvent("color", "green");

      document.getElementById("ad").addEventListener("click", function() {
        // Send a color=blue event when ad is clicked.
        admob.events.dispatchAppEvent("color", "blue");
      });
    });
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad">Carpe diem!</div>
</body>
</html>

ดูตัวอย่างเหตุการณ์แอปของ Ad Manager สำหรับการติดตั้งใช้งานเหตุการณ์ของแอปใน แอปเดโม API

Java Kotlin

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

ตัวอย่างใน GitHub

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

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

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

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

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

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

สำรวจหัวข้ออื่นๆ