Iklan banner

Iklan banner adalah iklan persegi panjang yang menempati sebagian tata letak aplikasi. Iklan tetap berada di layar saat pengguna berinteraksi dengan aplikasi, yang ditempatkan di bagian atas atau bawah layar atau sebaris dengan konten saat pengguna men-scroll. Iklan banner dapat dimuat ulang secara otomatis setelah jangka waktu tertentu. Lihat Ringkasan iklan banneruntuk informasi selengkapnya.

Panduan ini menunjukkan cara mulai menggunakan iklan banner adaptif anchor, yang memaksimalkan performa dengan mengoptimalkan ukuran iklan untuk setiap perangkat menggunakan lebar iklan yang Anda tentukan.

Iklan banner adaptif anchor adalah iklan rasio aspek tetap, bukan iklan dengan ukuran tetap yang biasa. Rasio aspeknya mirip dengan standar industri 320x50. Setelah Anda menentukan lebar penuh yang tersedia, iklan dengan tinggi optimal untuk lebar tersebut akan ditampilkan. Tinggi optimal tidak berubah di seluruh permintaan dari perangkat yang sama, dan tampilan di sekitarnya tidak perlu berpindah saat iklan dimuat ulang.

Prasyarat

Selalu uji dengan iklan percobaan

Saat membuat dan menguji aplikasi, pastikan Anda menggunakan iklan percobaan, bukan iklan produksi langsung. Jika Anda tidak melakukannya, akun Anda dapat ditangguhkan.

Cara termudah untuk memuat iklan percobaan adalah dengan menggunakan ID unit iklan percobaan khusus kami untuk banner Android:

/6499/example/adaptive-banner

Layanan ini telah dikonfigurasi secara khusus untuk menampilkan iklan percobaan untuk setiap permintaan, dan Anda dapat menggunakannya di aplikasi Anda sendiri saat melakukan coding, menguji, dan melakukan proses debug. Cukup pastikan Anda menggantinya dengan ID unit iklan Anda sendiri sebelum memublikasikan aplikasi.

Untuk informasi selengkapnya tentang cara kerja iklan percobaan Mobile Ads SDK, lihat Iklan Percobaan.

Tambahkan AdManagerAdView ke tata letak

Langkah pertama untuk menampilkan banner adalah dengan menempatkan AdManagerAdView pada tata letak untuk Activity atau Fragment tempat Anda ingin menampilkannya.:

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

Memuat iklan

Setelah AdManagerAdView diterapkan, langkah berikutnya adalah memuat iklan. Hal tersebut dilakukan dengan metode loadAd() di class AdManagerAdView. Dibutuhkan parameter AdManagerAdRequest, yang menyimpan informasi runtime, seperti info penargetan, tentang satu permintaan iklan.

Berikut ini contoh yang menunjukkan cara memuat iklan dalam metode onCreate() dari 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)
}

Jika iklan gagal dimuat, Anda tidak perlu secara eksplisit meminta iklan lain selama Anda telah mengonfigurasi unit iklan untuk dimuat ulang; Google Mobile Ads SDK akan mematuhi kecepatan refresh yang Anda tentukan di Ad Managerantarmuka web. Jika belum mengaktifkan refresh, Anda harus mengeluarkan permintaan baru.

Selesai. Aplikasi Anda kini siap menampilkan iklan banner.

Peristiwa iklan

Anda dapat memproses sejumlah peristiwa dalam siklus proses iklan, termasuk pemuatan, tayangan iklan, dan klik, serta peristiwa layar pembuka dan penutupan iklan. Sebaiknya tetapkan callback sebelum memuat banner.

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

Setiap metode yang dapat diganti di AdListener terkait dengan peristiwa dalam siklus proses iklan.

Metode yang dapat diganti
onAdClicked() Metode onAdClicked() dipanggil saat klik direkam untuk iklan.
onAdClosed() Metode onAdClosed() dipanggil saat pengguna kembali ke aplikasi setelah melihat URL tujuan iklan. Aplikasi Anda dapat menggunakannya untuk melanjutkan aktivitas yang ditangguhkan atau melakukan pekerjaan lain yang diperlukan agar siap untuk berinteraksi.
onAdFailedToLoad() Metode onAdFailedToLoad() adalah satu-satunya yang menyertakan parameter. Parameter error jenis LoadAdError menjelaskan error yang terjadi. Untuk informasi selengkapnya, lihat dokumentasi Men-debug Error Pemuatan Iklan.
onAdImpression() Metode onAdImpression() dipanggil saat tayangan dicatat untuk iklan.
onAdLoaded() Metode onAdLoaded() dijalankan saat iklan selesai dimuat. Jika ingin menunda penambahan AdManagerAdView ke aktivitas atau fragmen Anda hingga Anda yakin iklan akan dimuat, misalnya, Anda dapat melakukannya di sini.
onAdOpened() Metode onAdOpened() dipanggil saat iklan membuka overlay yang menutupi layar.

Akselerasi hardware untuk iklan video

Agar iklan video berhasil ditampilkan dalam tampilan iklan banner, akselerasi hardware harus diaktifkan.

Akselerasi hardware diaktifkan secara default, tetapi beberapa aplikasi dapat memilih untuk menonaktifkannya. Jika ini berlaku untuk aplikasi Anda, sebaiknya aktifkan akselerasi hardware untuk class Activity yang menggunakan iklan.

Mengaktifkan akselerasi hardware

Jika aplikasi Anda tidak berperilaku baik saat akselerasi hardware diaktifkan secara global, Anda juga dapat mengontrolnya untuk setiap aktivitas. Untuk mengaktifkan atau menonaktifkan akselerasi hardware, Anda dapat menggunakan atribut android:hardwareAccelerated untuk elemen <application> dan <activity> di AndroidManifest.xml. Contoh berikut mengaktifkan akselerasi hardware untuk seluruh aplikasi, tetapi menonaktifkannya untuk satu aktivitas:

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

Lihat Panduan akselerasi hardware untuk informasi selengkapnya tentang opsi untuk mengontrol akselerasi hardware. Perhatikan bahwa masing-masing tampilan iklan tidak dapat diaktifkan untuk akselerasi hardware jika aktivitas tersebut dinonaktifkan, sehingga aktivitas itu sendiri harus mengaktifkan akselerasi hardware.

Penghitungan tayangan manual

Penghitungan tayangan manual hanya kompatibel dengan kampanye yang dijual langsung dan kampanye internal dengan materi iklan yang diproses langsung di Ad Manager. Ini tidak boleh digunakan untuk pengisian ulang atau iklan jaringan pihak ketiga. Untuk detail selengkapnya, lihat Menghitung tayangan dan klik.

Anda dapat mengirim ping tayangan ke Ad Manager secara manual jika memiliki kondisi khusus saat tayangan harus dicatat. Untuk melakukannya, aktifkan AdManagerAdRequest untuk tayangan manual sebelum memuat iklan:

Java

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

Kotlin

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

Ketika menentukan bahwa iklan berhasil ditampilkan dan muncul di layar, Anda dapat mencatat tayangan secara manual:

Java

AdManagerAdView.recordManualImpression();

Kotlin

AdManagerAdView.recordManualImpression()

Peristiwa aplikasi

Peristiwa aplikasi memungkinkan Anda membuat iklan yang dapat mengirimkan pesan ke kode aplikasi mereka. Aplikasi kemudian dapat mengambil tindakan berdasarkan pesan ini.

Anda dapat memproses peristiwa aplikasi khusus Ad Manager menggunakan AppEventListener. Peristiwa ini dapat terjadi kapan saja selama siklus proses iklan, bahkan sebelum onAdLoaded() dipanggil.

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) dipanggil saat peristiwa aplikasi terjadi dalam iklan. Antarmuka ini dapat diimplementasikan oleh aktivitas Anda atau objek lainnya:

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

lalu diteruskan ke AdManagerAdView:

Java

AdManagerAdView.setAppEventListener(this);

Kotlin

AdManagerAdView.appEventListener = this

Berikut adalah contoh yang menunjukkan cara mengubah warna latar belakang aplikasi Anda, bergantung pada peristiwa aplikasi dengan nama warna:

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

Dan, berikut materi iklan terkait yang mengirim pesan peristiwa aplikasi berwarna ke Pemroses:

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

Lihat contoh Peristiwa Aplikasi Ad Manager untuk penerapan peristiwa aplikasi di aplikasi Demo API.

Java Kotlin

Referensi tambahan

Contoh di GitHub

  • Contoh iklan banner adaptif anchor: Java | Kotlin

Langkah berikutnya

Banner yang dapat diciutkan

Iklan banner yang dapat diciutkan adalah iklan banner yang awalnya ditampilkan sebagai overlay yang lebih besar, dengan tombol untuk menciutkan iklan ke ukuran yang lebih kecil. Pertimbangkan untuk menggunakannya untuk lebih mengoptimalkan performa Anda. Lihat iklan banner yang dapat diciutkan untuk detail selengkapnya.

Banner adaptif inline

Banner adaptif inline lebih besar dan lebih tinggi dibandingkan dengan banner adaptif anchor. Tingginya bervariasi dan dapat setinggi layar perangkat. Banner adaptif inline lebih direkomendasikan daripada iklan banner adaptif anchor untuk aplikasi yang menempatkan iklan banner dalam konten yang dapat di-scroll. Lihat banner adaptif inline untuk detail selengkapnya.

Jelajahi topik lainnya