Tips Integrasi Audience Network SDK di Android

Berikut ini beberapa praktik terbaik integrasi untuk implementasi developer di Android. Tips dan skenario kode ini akan membantu tim Anda lebih memahami Audience Network SDK kami, membuat proses integrasi lebih efektif, dan terus memperbarui solusi setelah peluncuran.

Prasyarat

Pastikan Anda telah menyelesaikan salah satu contoh ini:

Isu: Kerusakan yang Disebabkan oleh Memanggil loadAd Beberapa Kali.

Praktik Baik

Praktik Buruk


Praktik Baik:

Tips 1: Panggil loadAd lagi hanya jika iklan telah ditutup atau pemuatan iklan mengalami kesalahan, kecuali iklan spanduk.

Meski Anda diberi tahu tentang iklan ditutup atau kesalahan pada callback, pastikan Anda memiliki Jumlah Maks Coba Ulang untuk menghindari mencoba ulang tanpa batas. onError(Ad, AdError) akan dipanggil apa pun penyebab kegagalan pemuatan iklan. Contoh: dalam kasus "Tidak Ada Internet", Anda seharusnya berhenti memuat iklan saat mencapai Jumlah Maks Coba Ulang.

Di Audience Network SDK, untuk semua jenis iklan kecuali iklan spanduk, sebaiknya berhati-hati saat memanggil loadAd. Anda sebaiknya tidak memanggil loadAd saat iklan sedang ditampilkan. Praktik terbaiknya adalah menerapkan AdListener agar diberi tahu setiap kali iklan diabaikan, selesai, ditutup, atau mengalami kesalahan, yang memungkinkan Anda secara sah memanggil loadAd lagi, dan tidak menyebabkan masalah.

Contoh 1: Panggil loadAd di callback onInterstitialDismissed.

private InterstitialAd mInterstitialAd;
private static final MAX_NUMBER_OF_RETRIES = 3;
private boolean shouldLoadAd = true;
private int retryCount = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // call the super class onCreate 
    super.onCreate(savedInstanceState);
    ...
    mInterstitialAd = new InterstitialAd(this, "YOUR_PLACEMENT_ID");
    InterstitialAdListener interstitialAdListener = new InterstitialAdListener() {
        ...
        @Override
        public void onInterstitialDismissed(Ad ad) {
            // Interstitial dismissed callback
            if (shouldLoadAd) {
                /* Change shouldLoadAd value to false, 
                    or a new interstitial ad will show immediately 
                    when previous interstitial ad gets dismissed. */
                shouldLoadAd = false;
                mInterstitialAd.loadAd();
            }
        }
        
        @Override
        public void onError(Ad ad, AdError adError) {
            // Ad error callback
            // Stop retrying when it reaches to MAX_NUMBER_OF_RETRIES
            if(retryCount < MainActivity.MAX_NUMBER_OF_RETRIES) {
                retryCount += 1;
                mInterstitialAd.loadAd();
            }
        }
        ...
    };
    mInterstitialAd.loadAd(
            mInterstitialAd.buildLoadAdConfig()
                    .withAdListener(interstitialAdListener)
                    .build());
    ...
}

Contoh 2: Panggil loadAd di callback onError untuk NativeAd.

private static final MAX_NUMBER_OF_RETRIES = 3;
private NativeAd mNativeAd;
private int retryCount = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // call the super class onResume
    super.onCreate(savedInstanceState);
    ...
    mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID");
    NativeAdListener nativeAdListener = new AdListener() {
        ...
        @Override
        public void onError(Ad ad, AdError error) {
            // Ad error callback
            // Stop retrying when it reaches to MAX_NUMBER_OF_RETRIES
            if (retryCount < MainActivity.MAX_NUMBER_OF_RETRIES) {
                retryCount += 1;
                mNativeAd.loadAd();
            }
        }
        ...
    };
    mNativeAd.loadAd(
            mNativeAd.buildLoadAdConfig()
                    .withAdListener(nativeAdListener)
                    .build());
    ...
}

Tips 2: Instance Iklan bukan pengelola iklan. Anda seharusnya membuat instance baru setiap kali Anda perlu "memuat ulang" iklan untuk iklan native dan iklan spanduk.

Contoh:

private Button showNativeAdButton;

@Override
public void onCreate(Bundle savedInstanceState) {
    // call the super class onResume
    super.onCreate(savedInstanceState);
    ...
    showNativeAdButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // Create a native ad request with a placement ID
            nativeAd = new NativeAd(NativeAdSampleActivity.this, "YOUR_PLACEMENT_ID");

            // Create a listener to get notified when the ad was loaded.
            NativeAdListener nativeAdListener = new AdListener() {
                ...
            }

            // Initiate a request to load an ad.
            nativeAd.loadAd(
                    nativeAd.buildLoadAdConfig()
                            .withAdListener(nativeAdListener)
                            .build());
        }
    });
    ...
}

Praktik Buruk:

Tips 1: Jangan gunakan loadAd di beberapa callback Android, seperti callback onResume() atau onStart(), yang dapat menyebabkan loadAd dipanggil berkali-kali tanpa menutup atau melepaskan iklan terakhir dalam memori.


Contoh:

@Override
protected void onCreate(Bundle savedInstanceState) {
    // call the super class onResume
    super.onCreate(savedInstanceState);
    ...
    mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID");
    ...
}

@Override
protected void onResume() {
    super.onResume();
    ...
    // DON'T DO THIS!
    mNativeAd.loadAd(
            mNativeAd.buildLoadAdConfig()
                    .withAdListener(NativeAdSampleActivity.this)
                    .build());
}

Tips 2: Berhati-hatilah agar tidak memanggil loadAd tanpa batas dalam callback onError. Di bawah ini contoh tindakan yang tidak boleh Anda lakukan. Dalam hal "Tidak Ada Internet", loadAd akan dipanggil berkali-kali, yang akhirnya merusak aplikasi Anda.


Contoh:

private NativeAd mNativeAd;
private boolean shouldRetry = true;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // call the super class onResume
    super.onCreate(savedInstanceState);
    ...
    mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID");
    NativeAdListener nativeAdListener = new AdListener() {
        ...
        @Override
        public void onError(Ad ad, AdError error) {
            // Ad error callback
            // Remember to change shouldRetry to false, or DON'T implement like this! 
            if (shouldRetry) {
                mNativeAd.loadAd();
            }
        }
        ...
    };
    mNativeAd.loadAd(
            mNativeAd.buildLoadAdConfig()
                    .withAdListener(NativeAdSampleActivity.this)
                    .build());
    ...
}

Langkah Berikutnya

Sumber Informasi Lainnya

Panduan Memulai

Panduan teknis untuk memulai dengan Audience Network

Referensi API

Referensi Facebook SDK untuk iOS