Iklan reward (API lama)

Prasyarat

  • SDK Iklan Seluler Google 17.2.0 atau lebih tinggi.
  • Ikuti panduan Memulai untuk mengimpor SDK Iklan Seluler Google dan memperbarui manifes Android Anda.

Buat objek iklan berhadiah

Iklan reward diminta dan ditampilkan oleh objek RewardedAd . Langkah pertama adalah membuat Instansi RewardedAd . Ini dilakukan dalam metode onCreate() dari suatu Activity dalam cuplikan kode berikut:

Jawa

import com.google.android.gms.ads.rewarded.RewardedAd;

public class MainActivity extends Activity {

    private RewardedAd rewardedAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        rewardedAd = new RewardedAd(this,
            "ca-app-pub-3940256099942544/5224354917");
    }

}

Kotlin

import com.google.android.gms.ads.rewarded.RewardedAd

class MainActivity : Activity() {

  private lateinit var rewardedAd: RewardedAd

  override fun onCreate(savedInstanceState:Bundle) {
    ...
    rewardedAd = RewardedAd(this,
        "ca-app-pub-3940256099942544/5224354917")
  }
}

Konstruktor membutuhkan argumen berikut:

Selalu uji dengan iklan uji

Saat membuat dan menguji aplikasi Anda, pastikan Anda menggunakan iklan percobaan daripada iklan produksi langsung. Kegagalan untuk melakukannya dapat menyebabkan penangguhan akun Anda.

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

ca-app-pub-3940256099942544/5224354917

Ini telah dikonfigurasi secara khusus untuk menampilkan iklan percobaan untuk setiap permintaan, dan Anda bebas menggunakannya di aplikasi Anda sendiri saat mengkode, menguji, dan men-debug. Pastikan Anda menggantinya dengan ID unit iklan Anda sendiri sebelum memublikasikan aplikasi Anda.

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

Muat iklan

Untuk memuat iklan reward, panggil metode RewardedAd loadAd() objek RewardedAd. Metode ini memerlukan instance AdRequest dan RewardedAdLoadCallback sebagai argumen.

Jawa

import com.google.android.gms.ads.rewarded.RewardedAd;

public class MainActivity extends Activity {

    private RewardedAd rewardedAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        rewardedAd = new RewardedAd(this,
            "ca-app-pub-3940256099942544/5224354917");

        RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() {
            @Override
            public void onRewardedAdLoaded() {
                // Ad successfully loaded.
            }

           @Override
            public void onRewardedAdFailedToLoad(LoadAdError adError) {
                // Ad failed to load.
            }
        };
        rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback);
    }
}

Kotlin

import com.google.android.gms.ads.rewarded.RewardedAd

class MainActivity : Activity() {

  private lateinit var rewardedAd: RewardedAd

  override fun onCreate(savedInstanceState:Bundle) {
    rewardedAd = RewardedAd(this, "ca-app-pub-3940256099942544/5224354917")
    val adLoadCallback = object: RewardedAdLoadCallback() {
      fun onRewardedAdLoaded() {
        // Ad successfully loaded.
      }
      fun onRewardedAdFailedToLoad(adError: LoadAdError) {
        // Ad failed to load.
      }
    }
    rewardedAd.loadAd(AdRequest.Builder().build(), adLoadCallback)
  }
}

Metode onRewardedAdLoaded() dan onRewardedAdFailedToLoad() dari RewardedAdLoadCallback memberikan hasil dari operasi pemuatan iklan.

Metode yang dapat ditimpa
onRewardedAdLoaded() Metode ini dijalankan ketika iklan telah selesai dimuat.
onRewardedAdFailedToLoad() Metode ini dipanggil saat iklan gagal dimuat. Ini mencakup parameter kesalahan jenis LoadAdError yang menunjukkan jenis kegagalan apa yang terjadi. Untuk informasi lebih lanjut, lihat dokumentasi Debugging Ad Load Errors .

Tampilkan iklan

Sebelum menampilkan iklan reward kepada pengguna, Anda harus memberikan pilihan eksplisit kepada pengguna untuk melihat konten iklan reward dengan imbalan reward. Iklan reward harus selalu menjadi pengalaman keikutsertaan.

Untuk menampilkan RewardedAd , gunakan metode isLoaded() untuk memverifikasi bahwa itu selesai dimuat, lalu panggil show() . Metode show() memerlukan instance Activity dan RewardedAdCallback sebagai argumen. Instance Activity harus merupakan aktivitas dari mana iklan reward ditampilkan.

Iklan reward dari contoh kode sebelumnya dapat ditampilkan di OnClickListener tombol seperti ini:

Jawa

myButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (rewardedAd.isLoaded()) {
            Activity activityContext = MainActivity.this
            RewardedAdCallback adCallback = new RewardedAdCallback() {
                @Override
                public void onRewardedAdOpened() {
                    // Ad opened.
                }

                @Override
                public void onRewardedAdClosed() {
                    // Ad closed.
                }

                @Override
                public void onUserEarnedReward(@NonNull RewardItem reward) {
                    // User earned reward.
                }

                @Override
                public void onRewardedAdFailedToShow(AdError adError) {
                    // Ad failed to display.
                }
            };
            rewardedAd.show(activityContext, adCallback);
        } else {
            Log.d("TAG", "The rewarded ad wasn't loaded yet.");
        }
    }
});

Kotlin

myButton.setOnClickListener {
  if (rewardedAd.isLoaded) {
    val activityContext: Activity = this@MainActivity
    val adCallback = object: RewardedAdCallback() {
      override fun onRewardedAdOpened() {
        // Ad opened.
      }
      override fun onRewardedAdClosed() {
        // Ad closed.
      }
      override fun onUserEarnedReward(@NonNull reward: RewardItem) {
        // User earned reward.
      }
      override fun onRewardedAdFailedToShow(adError: AdError) {
        // Ad failed to display.
      }
    }
    rewardedAd.show(activityContext, adCallback)
  }
  else {
    Log.d("TAG", "The rewarded ad wasn't loaded yet.")
  }
}

Terima pemberitahuan acara iklan

RewardedAdCallback yang diberikan ke metode show() mendapat notifikasi tentang peristiwa iklan reward. Setiap metode yang dapat diganti di RewardedAdCallback sesuai dengan peristiwa dalam siklus hidup iklan reward. Misalnya, metode onUserEarnedReward() adalah tempat yang tepat untuk memberikan imbalan kepada pengguna. Detail tambahan pada setiap metode peristiwa iklan disediakan di bawah ini.

Metode yang dapat ditimpa
onRewardedAdOpened() Metode ini dipanggil saat iklan ditampilkan, menutupi layar perangkat.
onRewardedAdClosed() Metode ini dipanggil saat iklan reward ditutup karena pengguna mengetuk ikon tutup atau menggunakan tombol kembali. Jika aplikasi Anda menjeda keluaran audio atau putaran permainannya, ini adalah tempat yang tepat untuk melanjutkannya.
onUserEarnedReward() Metode ini dipanggil saat pengguna harus diberi imbalan karena berinteraksi dengan iklan. Detail bonus yang dikonfigurasi untuk unit iklan Anda dapat diakses melalui metode getType() dan getAmount() dari parameter RewardItem .
onRewardedAdFailedToShow() Metode ini dipanggil saat iklan gagal ditampilkan. Ini mencakup parameter adError yang menunjukkan jenis kegagalan apa yang terjadi. Kemungkinan nilai kode kesalahan ( adError.getCode() ) didefinisikan sebagai konstanta di kelas RewardedAdCallback .

Menggunakan RewardedAdCallback untuk memuat iklan reward berikutnya

RewardedAd adalah objek sekali pakai. Ini berarti bahwa setelah iklan reward ditampilkan, objek tidak dapat digunakan untuk memuat iklan lain. Untuk meminta iklan reward lainnya, Anda harus membuat objek RewardedAd baru.

Praktik terbaik adalah memuat iklan reward lainnya dalam metode onRewardedAdClosed() di RewardedAdCallback sehingga iklan reward berikutnya mulai dimuat segera setelah iklan sebelumnya ditutup:

Jawa

public RewardedAd createAndLoadRewardedAd() {
        RewardedAd rewardedAd = new RewardedAd(this,
                "ca-app-pub-3940256099942544/5224354917");
        RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() {
            @Override
            public void onRewardedAdLoaded() {
                // Ad successfully loaded.
            }

            @Override
            public void onRewardedAdFailedToLoad(LoadAdError adError) {
                // Ad failed to load.
            }
        };
        rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback);
        return rewardedAd;
}

@Override
public void onRewardedAdClosed() {
    this.rewardedAd = createAndLoadRewardedAd();
}

Kotlin

fun createAndLoadRewardedAd(): RewardedAd {
  val rewardedAd = RewardedAd(this, "ca-app-pub-3940256099942544/5224354917")
  val adLoadCallback = object: RewardedAdLoadCallback() {
    override fun onRewardedAdLoaded() {
      // Ad successfully loaded.
    }
    override fun onRewardedAdFailedToLoad(adError: LoadAdError) {
      // Ad failed to load.
    }
  }
  rewardedAd.loadAd(AdRequest.Builder().build(), adLoadCallback)
  return rewardedAd
}
fun onRewardedAdClosed() {
  this.rewardedAd = createAndLoadRewardedAd()
}

Memuat beberapa iklan berhadiah

Untuk memuat beberapa iklan reward, ikuti langkah-langkah yang diuraikan dalam membuat objek iklan reward dan muat bagian iklan untuk setiap iklan yang ingin Anda muat. Cuplikan kode di bawah ini menunjukkan cara memuat dua iklan reward untuk dua penempatan iklan yang berbeda.

Jawa

package ...

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.rewarded.RewardedAd;

public class MainActivity extends Activity {

    private RewardedAd gameOverRewardedAd;
    private RewardedAd extraCoinsRewardedAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        gameOverRewardedAd = createAndLoadRewardedAd(
          "ca-app-pub-3940256099942544/5224354917");
        extraCoinsRewardedAd = createAndLoadRewardedAd(
          "ca-app-pub-3940256099942544/5224354917");
    }

    public RewardedAd createAndLoadRewardedAd(String adUnitId) {
        RewardedAd rewardedAd = new RewardedAd(this, adUnitId);
        RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() {
            @Override
            public void onRewardedAdLoaded() {
                // Ad successfully loaded.
            }

            @Override
            public void onRewardedAdFailedToLoad(LoadAdError adError) {
                // Ad failed to load.
            }
        };
        rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback);
        return rewardedAd;
    }
}

Kotlin

import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.rewarded.RewardedAd

class MainActivity: Activity() {

  private lateinit var gameOverRewardedAd: RewardedAd
  private lateinit var extraCoinsRewardedAd: RewardedAd

  override fun onCreate(savedInstanceState:Bundle) {
    ...
    gameOverRewardedAd = createAndLoadRewardedAd(
      "ca-app-pub-3940256099942544/5224354917")
    extraCoinsRewardedAd = createAndLoadRewardedAd(
      "ca-app-pub-3940256099942544/5224354917")
  }

  fun createAndLoadRewardedAd(adUnitId:String): RewardedAd {
    val rewardedAd = RewardedAd(this, adUnitId)
    val adLoadCallback = object: RewardedAdLoadCallback() {
      override fun onRewardedAdLoaded() {
        // Ad successfully loaded.
      }
      override fun onRewardedAdFailedToLoad(adError: LoadAdError) {
        // Ad failed to load.
      }
    }
    rewardedAd.loadAd(AdRequest.Builder().build(), adLoadCallback)
    return rewardedAd
  }
}

FAQ

Bisakah saya mendapatkan detail hadiah untuk RewardedAd ?
Ya, jika Anda memerlukan jumlah reward sebelum callback onUserEarnedReward() diaktifkan, RewardedAd memiliki metode getRewardItem() yang dapat Anda periksa untuk memverifikasi jumlah reward setelah iklan dimuat.
Apakah ada batas waktu untuk panggilan inisialisasi?
Setelah 10 detik, Google Mobile Ads SDK memanggil OnInitializationCompleteListener meskipun jaringan mediasi masih belum menyelesaikan inisialisasi.
Bagaimana jika beberapa jaringan mediasi belum siap saat saya mendapatkan panggilan balik inisialisasi?

Ini adalah praktik terbaik untuk memuat iklan di dalam callback OnInitializationCompleteListener . Meskipun jaringan mediasi belum siap, SDK Iklan Seluler Google akan tetap meminta iklan dari jaringan tersebut. Jadi, jika jaringan mediasi selesai melakukan inisialisasi setelah waktu tunggu habis, jaringan tersebut masih dapat melayani permintaan iklan berikutnya di sesi tersebut.

Anda dapat melanjutkan polling status inisialisasi semua adaptor selama sesi aplikasi Anda dengan memanggil MobileAds.getInitializationStatus() .

Bagaimana cara mengetahui mengapa jaringan mediasi tertentu belum siap?

AdapterStatus.getDescription() menjelaskan alasan adaptor tidak siap melayani permintaan iklan.