Iklan Native

Iklan native adalah aset iklan yang ditampilkan kepada pengguna melalui komponen UI yang merupakan native untuk platform. View ini ditampilkan menggunakan jenis tampilan yang sama dengan yang telah Anda gunakan untuk membuat tata letak, dan dapat diformat agar cocok dengan desain visual aplikasi Anda.

Saat iklan native dimuat, aplikasi Anda akan menerima objek iklan yang berisi asetnya, dan aplikasi—bukan Google Mobile Ads SDK—yang kemudian bertanggung jawab untuk menampilkannya.

Secara garis besar, ada dua bagian agar berhasil menerapkan iklan native: Memuat iklan menggunakan SDK, lalu menampilkan konten iklan di aplikasi Anda.

Halaman ini menunjukkan cara menggunakan SDK untuk memuat iklan native. Tips: Pelajari iklan native lebih lanjut di Playbook Iklan Native kami.

Anda juga dapat melihat beberapa kisah sukses pelanggan: studi kasus 1, studi kasus 2.

Prasyarat

Selalu uji dengan iklan percobaan

Saat mem-build dan menguji aplikasi, pastikan Anda menggunakan iklan percobaan, bukan iklan produksi langsung.

Cara termudah untuk memuat iklan pengujian adalah dengan menggunakan ID unit iklan pengujian khusus kami untuk iklan native di Android:

ca-app-pub-3940256099942544/2247696110

API ini telah dikonfigurasi secara khusus agar menampilkan iklan percobaan untuk setiap permintaan, dan Anda dapat menggunakannya di aplikasi Anda sendiri saat melakukan coding, pengujian, dan proses debug. Pastikan Anda menggantinya dengan ID unit iklan Anda sendiri sebelum memublikasikan aplikasi.

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

Memuat iklan

Iklan native dimuat dengan class AdLoader, yang memiliki class Builder sendiri untuk menyesuaikannya selama pembuatan. Dengan menambahkan pemroses ke AdLoader saat membuat aplikasi, aplikasi akan menentukan jenis iklan native yang siap diterima. AdLoader kemudian hanya meminta jenis tersebut.

Membuat AdLoader

Kode berikut menunjukkan cara mem-build AdLoader yang dapat memuat iklan native:

Java

AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
        @Override
        public void onNativeAdLoaded(NativeAd nativeAd) {
            // Show the ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(LoadAdError adError) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(new NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build();

Kotlin

val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110}")
    .forNativeAd { ad : NativeAd ->
        // Show the ad.
    }
    .withAdListener(object : AdListener() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            // Handle the failure.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

Metode forNativeAd() bertanggung jawab untuk menyiapkan AdLoader untuk format NativeAd. Saat iklan berhasil dimuat, metode onNativeAdLoaded() objek pemroses peristiwa akan dipanggil.

Menyiapkan AdListener dengan AdLoader (opsional)

Saat membuat AdLoader, fungsi withAdListener menetapkan AdListener untuk loader. Metode ini menggunakan AdListener sebagai parameter tunggalnya, yang menerima callback dari AdLoader saat peristiwa siklus proses iklan terjadi:

Java

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

Permintaan iklan

Setelah selesai membuat AdLoader, kini saatnya menggunakannya untuk meminta iklan. Ada dua metode yang tersedia untuk ini: loadAd() dan loadAds().

loadAd()

Metode ini mengirimkan permintaan untuk satu iklan.

Java

adLoader.loadAd(new AdRequest.Builder().build());

Kotlin

adLoader.loadAd(AdRequest.Builder().build())

loadAds()

Metode ini mengirim permintaan untuk beberapa iklan (hingga lima):

Java

adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

adLoader.loadAds(AdRequest.Builder().build(), 3)

Kedua metode ini menggunakan objek AdRequest sebagai parameter pertamanya. Class ini adalah class AdRequest yang sama dengan yang digunakan oleh banner dan interstisial, dan Anda dapat menggunakan metode class AdRequest untuk menambahkan informasi penargetan, seperti yang Anda lakukan dengan format iklan lainnya.

Memuat beberapa iklan (opsional)

Metode loadAds() menggunakan parameter tambahan: jumlah iklan yang harus dicoba dimuat oleh SDK untuk permintaan. Jumlah ini dibatasi hingga lima, dan SDK tidak menjamin bahwa SDK akan menampilkan jumlah iklan yang diminta secara tepat.

Semua iklan Google yang ditampilkan akan berbeda satu sama lain, meskipun iklan dari inventaris yang direservasi atau pembeli pihak ketiga tidak dijamin unik.

Jangan gunakan metode loadAds() jika Anda menggunakan mediasi, karena permintaan untuk beberapa iklan native saat ini tidak berfungsi untuk ID unit iklan yang telah dikonfigurasi untuk mediasi.

Callback

Setelah panggilan ke loadAd(), callback tunggal dilakukan ke metode pemroses yang telah ditentukan sebelumnya untuk mengirim objek iklan native atau melaporkan error.

Setelah panggilan ke loadAds(), beberapa callback tersebut akan dibuat (setidaknya satu, dan tidak lebih dari jumlah iklan yang diminta). Aplikasi yang meminta beberapa iklan harus memanggil AdLoader.isLoading() dalam implementasi callback-nya untuk menentukan apakah proses pemuatan telah selesai.

Berikut adalah contoh yang menunjukkan cara memeriksa isLoading() dalam callback onNativeAdLoaded():

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading()) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }
}).build();
adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }.build()
adLoader.loadAds(AdRequest.Builder().build(), 3)

Merilis resource

Pastikan untuk menggunakan metode destroy() pada iklan native yang dimuat. Tindakan ini akan melepaskan resource yang digunakan dan mencegah kebocoran memori.

Pastikan semua referensi NativeAd dihancurkan dalam metode onDestroy() aktivitas Anda.

Dalam callback onNativeAdLoaded, pastikan untuk menghancurkan iklan native yang ada yang akan dihapus referensinya.

Pemeriksaan kunci lainnya adalah apakah aktivitas dihancurkan dan jika ya, panggil destroy() pada iklan yang ditampilkan dan segera kembalikan:

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed()` is a method on Activity.
        if (isDestroyed()) {
            nativeAd.destroy();
            return;
        }
        ...
    }
}).build();

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd { nativeAd ->
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed` is a method on Activity.
        if (isDestroyed) {
            nativeAd.destroy()
            return@forNativeAd
        }
        ...
    }.build()

Praktik terbaik

Ikuti aturan ini saat memuat iklan.

  • Aplikasi yang menggunakan iklan native dalam daftar harus melakukan pra-cache daftar iklan.

  • Saat melakukan pra-cache iklan, hapus cache dan muat ulang setelah satu jam.

  • Jangan panggil loadAd() atau loadAds() di AdLoader hingga permintaan pertama selesai dimuat.

  • Batasi penyimpanan dalam cache iklan native hanya pada yang diperlukan. Misalnya saat precaching, hanya cache iklan yang langsung terlihat di layar. Iklan native memiliki jejak memori yang besar, dan meng-cache iklan native tanpa menghancurkannya akan menyebabkan penggunaan memori yang berlebihan.

  • Hancurkan iklan native saat tidak lagi digunakan.

Akselerasi hardware untuk iklan video

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

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

Mengaktifkan akselerasi hardware

Jika aplikasi Anda tidak berperilaku baik saat akselerasi hardware diaktifkan secara global, Anda juga dapat mengontrolnya untuk aktivitas individual. Untuk mengaktifkan atau menonaktifkan akselerasi hardware, gunakan atribut android:hardwareAccelerated untuk elemen <application> dan <activity> di AndroidManifest.xml Anda. 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 HW untuk informasi selengkapnya tentang opsi untuk mengontrol akselerasi hardware. Perlu diketahui bahwa tampilan iklan individual tidak dapat diaktifkan untuk akselerasi hardware jika Aktivitas dinonaktifkan, sehingga Aktivitas itu sendiri harus mengaktifkan akselerasi hardware.

Tampilkan iklan Anda

Setelah memuat iklan, Anda hanya perlu menampilkannya kepada pengguna. Buka panduan Native Advanced untuk mengetahui caranya.