Sampaikan masukan Anda dan bantu menyempurnakan rencana pengembangan Google Mobile Ads SDK. Ikuti Survei Tahunan Google Mobile Ads SDK untuk tahun 2023 sebelum ditutup pada tanggal 5 Mei 2023.

Iklan Asli

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Iklan native adalah aset iklan yang ditampilkan kepada pengguna melalui komponen UI yang merupakan native platform. Iklan tersebut ditampilkan menggunakan jenis tampilan yang sama dengan yang telah Anda buat tata letaknya, dan dapat diformat agar sesuai dengan desain visual pengalaman pengguna tempat tata letak tersebut. Dalam istilah coding, ini berarti bahwa saat iklan native dimuat, aplikasi Anda menerima objek NativeAd yang berisi asetnya, dan aplikasi (bukan Google Mobile Ads SDK) 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 berfokus pada penggunaan SDK untuk memuat iklan native.

Prasyarat

Implementasi

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

Membuat AdLoader

Kode berikut menunjukkan cara membuat 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 by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

Mempersiapkan format NativeAd

Metode pertama di atas bertanggung jawab untuk menyiapkan AdLoader untuk format NativeAd:

forNativeAd()
Memanggil metode ini akan mengonfigurasi AdLoader untuk meminta iklan native. Setelah iklan berhasil dimuat, metode onNativeAdLoaded() objek pemroses akan dipanggil.

Saat AdLoader membuat permintaan iklan, Google akan memilih dan menampilkan iklan yang memaksimalkan hasil penayang.

Menyiapkan AdListener dengan AdLoader (opsional)

Selama pembuatan AdLoader di atas, fungsi withAdListener menetapkan AdListener. Metode ini menggunakan AdListener sebagai satu-satunya parameter, yang menerima callback dari AdLoader saat peristiwa siklus proses iklan berlangsung:

Java

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

Kotlin

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

Muat iklan

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

loadAd()
Metode ini mengirim 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 (maksimal 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. 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.

loadAds() menggunakan parameter tambahan: jumlah iklan yang harus dicoba dimuat oleh SDK untuk permintaan tersebut. Jumlah ini dibatasi lima, dan tidak ada jaminan bahwa SDK akan menampilkan jumlah iklan yang diminta dengan tepat.

Iklan Google yang dikembalikan akan berbeda satu sama lain. Iklan dari inventaris yang direservasi atau pembeli pihak ketiga, termasuk pembeli yang dikonfigurasi untuk mediasi atau bidding waterfall, tidak dijamin unik.

Callback

Setelah panggilan ke loadAd(), satu callback dibuat ke metode pemroses yang 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 penerapan 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)

Bebaskan fasilitas

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

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

Dalam callback onNativeAdLoaded Anda, pastikan untuk menghancurkan iklan native yang sudah ada yang akan dihilangkan referensinya.

Pemeriksaan kunci lainnya adalah jika aktivitas dihancurkan dan jika demikian, panggil destroy() pada iklan yang ditampilkan dan segera kembali:

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

Selalu uji dengan iklan uji coba

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

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

ca-app-pub-3940256099942544/2247696110

Ini telah dikonfigurasi secara khusus untuk menampilkan iklan pengujian untuk setiap permintaan, dan Anda bebas menggunakannya di aplikasi Anda sendiri saat coding, pengujian, dan proses debug. Pastikan Anda menggantinya dengan ID unit iklan Anda sendiri sebelum memublikasikan aplikasi.

Untuk informasi selengkapnya tentang cara kerja iklan pengujian Mobile Ads SDK, lihat Iklan Pengujian.

Kapan harus meminta iklan

Aplikasi yang menampilkan iklan native bebas memintanya sebelum waktu iklan benar-benar ditampilkan. Dalam banyak kasus, ini adalah praktik yang direkomendasikan. Aplikasi yang menampilkan daftar item dengan campuran iklan native, misalnya, dapat memuat iklan native untuk seluruh daftar dengan mengetahui bahwa beberapa iklan native hanya akan ditampilkan setelah pengguna men-scroll tampilan dan beberapa iklan lainnya mungkin tidak ditampilkan sama sekali.

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 ini berlaku untuk aplikasi Anda, sebaiknya aktifkan akselerasi hardware untuk class Activity yang menggunakan iklan.

Mengaktifkan akselerasi hardware

Jika aplikasi Anda tidak berperilaku baik dengan akselerasi hardware yang diaktifkan secara global, Anda juga dapat mengontrolnya untuk aktivitas tertentu. 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 HW untuk informasi selengkapnya tentang opsi untuk mengontrol akselerasi hardware. Perhatikan bahwa tampilan iklan tunggal tidak dapat diaktifkan untuk akselerasi hardware jika Aktivitas dinonaktifkan, sehingga Aktivitas tersebut harus mengaktifkan akselerasi hardware.

Menampilkan NativeAd

Setelah Anda memuat iklan, yang tersisa hanyalah menampilkannya kepada pengguna. Buka panduan Native Advanced untuk melihat caranya.

,

Iklan native adalah aset iklan yang ditampilkan kepada pengguna melalui komponen UI yang merupakan native platform. Iklan tersebut ditampilkan menggunakan jenis tampilan yang sama dengan yang telah Anda buat tata letaknya, dan dapat diformat agar sesuai dengan desain visual pengalaman pengguna tempat tata letak tersebut. Dalam istilah coding, ini berarti bahwa saat iklan native dimuat, aplikasi Anda menerima objek NativeAd yang berisi asetnya, dan aplikasi (bukan Google Mobile Ads SDK) 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 berfokus pada penggunaan SDK untuk memuat iklan native.

Prasyarat

Implementasi

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

Membuat AdLoader

Kode berikut menunjukkan cara membuat 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 by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

Mempersiapkan format NativeAd

Metode pertama di atas bertanggung jawab untuk menyiapkan AdLoader untuk format NativeAd:

forNativeAd()
Memanggil metode ini akan mengonfigurasi AdLoader untuk meminta iklan native. Setelah iklan berhasil dimuat, metode onNativeAdLoaded() objek pemroses akan dipanggil.

Saat AdLoader membuat permintaan iklan, Google akan memilih dan menampilkan iklan yang memaksimalkan hasil penayang.

Menyiapkan AdListener dengan AdLoader (opsional)

Selama pembuatan AdLoader di atas, fungsi withAdListener menetapkan AdListener. Metode ini menggunakan AdListener sebagai satu-satunya parameter, yang menerima callback dari AdLoader saat peristiwa siklus proses iklan berlangsung:

Java

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

Kotlin

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

Muat iklan

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

loadAd()
Metode ini mengirim 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 (maksimal 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. 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.

loadAds() menggunakan parameter tambahan: jumlah iklan yang harus dicoba dimuat oleh SDK untuk permintaan tersebut. Jumlah ini dibatasi lima, dan tidak ada jaminan bahwa SDK akan menampilkan jumlah iklan yang diminta dengan tepat.

Iklan Google yang dikembalikan akan berbeda satu sama lain. Iklan dari inventaris yang direservasi atau pembeli pihak ketiga, termasuk pembeli yang dikonfigurasi untuk mediasi atau bidding waterfall, tidak dijamin unik.

Callback

Setelah panggilan ke loadAd(), satu callback dibuat ke metode pemroses yang 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 penerapan 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)

Bebaskan fasilitas

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

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

Dalam callback onNativeAdLoaded Anda, pastikan untuk menghancurkan iklan native yang sudah ada yang akan dihilangkan referensinya.

Pemeriksaan kunci lainnya adalah jika aktivitas dihancurkan dan jika demikian, panggil destroy() pada iklan yang ditampilkan dan segera kembali:

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

Selalu uji dengan iklan uji coba

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

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

ca-app-pub-3940256099942544/2247696110

Ini telah dikonfigurasi secara khusus untuk menampilkan iklan pengujian untuk setiap permintaan, dan Anda bebas menggunakannya di aplikasi Anda sendiri saat coding, pengujian, dan proses debug. Pastikan Anda menggantinya dengan ID unit iklan Anda sendiri sebelum memublikasikan aplikasi.

Untuk informasi selengkapnya tentang cara kerja iklan pengujian Mobile Ads SDK, lihat Iklan Pengujian.

Kapan harus meminta iklan

Aplikasi yang menampilkan iklan native bebas memintanya sebelum waktu iklan benar-benar ditampilkan. Dalam banyak kasus, ini adalah praktik yang direkomendasikan. Aplikasi yang menampilkan daftar item dengan campuran iklan native, misalnya, dapat memuat iklan native untuk seluruh daftar dengan mengetahui bahwa beberapa iklan native hanya akan ditampilkan setelah pengguna men-scroll tampilan dan beberapa iklan lainnya mungkin tidak ditampilkan sama sekali.

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 ini berlaku untuk aplikasi Anda, sebaiknya aktifkan akselerasi hardware untuk class Activity yang menggunakan iklan.

Mengaktifkan akselerasi hardware

Jika aplikasi Anda tidak berperilaku baik dengan akselerasi hardware yang diaktifkan secara global, Anda juga dapat mengontrolnya untuk aktivitas tertentu. 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 HW untuk informasi selengkapnya tentang opsi untuk mengontrol akselerasi hardware. Perhatikan bahwa tampilan iklan tunggal tidak dapat diaktifkan untuk akselerasi hardware jika Aktivitas dinonaktifkan, sehingga Aktivitas tersebut harus mengaktifkan akselerasi hardware.

Menampilkan NativeAd

Setelah Anda memuat iklan, yang tersisa hanyalah menampilkannya kepada pengguna. Buka panduan Native Advanced untuk melihat caranya.