Iklan reward

Pilih platform: Android iOS Unity Flutter

Iklan reward memungkinkan Anda memberi reward kepada pengguna dengan item dalam aplikasi karena telah berinteraksi dengan iklan video, iklan yang dapat dimainkan, dan survei.

Prasyarat

  • Google Mobile Ads SDK 19.7.0 atau yang lebih tinggi.
  • Selesaikan Panduan memulai.

Selalu lakukan pengujian 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 iklan reward Android:

ca-app-pub-3940256099942544/5224354917

ID ini telah dikonfigurasi secara khusus untuk menampilkan iklan pengujian untuk setiap permintaan, dan Anda bebas menggunakannya di aplikasi Anda sendiri saat melakukan coding, pengujian, dan pen-debugan. Pastikan Anda menggantinya dengan ID unit iklan Anda sendiri sebelum memublikasikan aplikasi.

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

Memuat objek iklan reward

Iklan reward dimuat dengan memanggil metode load() statis pada class RewardedAd dan meneruskan RewardedAdLoadCallback. Hal ini biasanya dilakukan dalam metode onCreate() dari Activity. Perhatikan bahwa seperti callback pemuatan format lainnya, RewardedAdLoadCallback memanfaatkan LoadAdError untuk memberikan detail error dengan fidelitas yang lebih tinggi.

JavaKotlin
RewardedAd.load(
    this,
    "AD_UNIT_ID",
    new AdRequest.Builder().build(),
    new RewardedAdLoadCallback() {
      @Override
      public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
        Log.d(TAG, "Ad was loaded.");
        MainActivity.this.rewardedAd = rewardedAd;
      }

      @Override
      public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
        Log.d(TAG, loadAdError.getMessage());
        rewardedAd = null;
      }
    });
RewardedAd.load(
  this,
  "AD_UNIT_ID",
  AdRequest.Builder().build(),
  object : RewardedAdLoadCallback() {
    override fun onAdLoaded(ad: RewardedAd) {
      Log.d(TAG, "Ad was loaded.")
      rewardedAd = ad
    }

    override fun onAdFailedToLoad(adError: LoadAdError) {
      Log.d(TAG, adError.message)
      rewardedAd = null
    }
  },
)

Ganti AD_UNIT_ID dengan ID unit iklan Anda.

Menetapkan FullScreenContentCallback

FullScreenContentCallback menangani peristiwa yang terkait dengan menampilkan RewardedAd Anda. Sebelum menampilkan RewardedAd, pastikan untuk menyetel callback seperti berikut:

JavaKotlin
rewardedAd.setFullScreenContentCallback(
    new FullScreenContentCallback() {
      @Override
      public void onAdDismissedFullScreenContent() {
        // Called when fullscreen content is dismissed.
        Log.d(TAG, "Ad was dismissed.");
        // Don't forget to set the ad reference to null so you
        // don't show the ad a second time.
        rewardedAd = null;
      }

      @Override
      public void onAdFailedToShowFullScreenContent(AdError adError) {
        // Called when fullscreen content failed to show.
        Log.d(TAG, "Ad failed to show.");
        // Don't forget to set the ad reference to null so you
        // don't show the ad a second time.
        rewardedAd = null;
      }

      @Override
      public void onAdShowedFullScreenContent() {
        // Called when fullscreen content is shown.
        Log.d(TAG, "Ad showed fullscreen content.");
      }

      @Override
      public void onAdImpression() {
        // Called when an impression is recorded for an ad.
        Log.d(TAG, "Ad recorded an impression.");
      }

      @Override
      public void onAdClicked() {
        // Called when an ad is clicked.
        Log.d(TAG, "Ad was clicked.");
      }
    });
rewardedAd?.fullScreenContentCallback =
  object : FullScreenContentCallback() {
    override fun onAdDismissedFullScreenContent() {
      // Called when fullscreen content is dismissed.
      Log.d(TAG, "Ad was dismissed.")
      // Don't forget to set the ad reference to null so you
      // don't show the ad a second time.
      rewardedAd = null
    }

    override fun onAdFailedToShowFullScreenContent(adError: AdError) {
      // Called when fullscreen content failed to show.
      Log.d(TAG, "Ad failed to show.")
      // Don't forget to set the ad reference to null so you
      // don't show the ad a second time.
      rewardedAd = null
    }

    override fun onAdShowedFullScreenContent() {
      // Called when fullscreen content is shown.
      Log.d(TAG, "Ad showed fullscreen content.")
    }

    override fun onAdImpression() {
      // Called when an impression is recorded for an ad.
      Log.d(TAG, "Ad recorded an impression.")
    }

    override fun onAdClicked() {
      // Called when an ad is clicked.
      Log.d(TAG, "Ad was clicked.")
    }
  }

Menampilkan iklan

Saat menampilkan iklan reward, Anda akan menggunakan objek OnUserEarnedRewardListener untuk menangani peristiwa reward.

JavaKotlin
rewardedAd.show(
    MainActivity.this,
    new OnUserEarnedRewardListener() {
      @Override
      public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
        Log.d(TAG, "User earned the reward.");
        // Handle the reward.
      }
    });
rewardedAd?.show(
  this,
  OnUserEarnedRewardListener { rewardItem ->
    Log.d(TAG, "User earned the reward.")
    // Handle the reward.
    val rewardAmount = rewardItem.amount
    val rewardType = rewardItem.type
  },
)

[Opsional] Memvalidasi callback verifikasi sisi server (SSV)

Aplikasi yang memerlukan data tambahan dalam callback verifikasi sisi server harus menggunakan fitur data kustom iklan reward. Nilai string apa pun yang ditetapkan pada objek iklan bersedia ditonton akan diteruskan ke parameter kueri custom_data dari callback SSV. Jika tidak ada nilai data kustom yang ditetapkan, nilai parameter kueri custom_data tidak akan ada dalam callback SSV.

Contoh kode berikut menunjukkan cara menyetel data kustom pada objek iklan reward sebelum meminta iklan.

JavaKotlin
RewardedAd.load(
    context,
    AD_UNIT_ID,
    new AdRequest.Builder().build(),
    new RewardedAdLoadCallback() {
      @Override
      public void onAdLoaded(RewardedAd ad) {
        rewardedAd = ad;
        ServerSideVerificationOptions options =
            new ServerSideVerificationOptions.Builder()
                .setCustomData("SAMPLE_CUSTOM_DATA_STRING")
                .build();
        rewardedAd.setServerSideVerificationOptions(options);
      }
    });
RewardedAd.load(
  context,
  AD_UNIT_ID,
  AdRequest.Builder().build(),
  object : RewardedAdLoadCallback() {
    override fun onAdLoaded(ad: RewardedAd) {
      rewardedAd = ad
      val options =
        ServerSideVerificationOptions.Builder().setCustomData("SAMPLE_CUSTOM_DATA_STRING").build()
      rewardedAd?.setServerSideVerificationOptions(options)
    }
  },
)

Ganti SAMPLE_CUSTOM_DATA_STRING dengan data kustom Anda.

Jika ingin menetapkan string reward kustom, Anda harus melakukannya sebelum menampilkan iklan.

FAQ

Apakah ada waktu tunggu untuk panggilan inisialisasi?
Setelah 10 detik, Google Mobile Ads SDK memanggil OnInitializationCompleteListener meskipun jaringan mediasi belum menyelesaikan inisialisasi.
Bagaimana jika beberapa jaringan mediasi belum siap saat saya mendapatkan callback inisialisasi?

Sebaiknya muat iklan di dalam callback OnInitializationCompleteListener. Meskipun jaringan mediasi belum siap, Google Mobile Ads SDK tetap meminta iklan dari jaringan tersebut. Jadi, jika jaringan mediasi selesai melakukan inisialisasi setelah waktu tunggu habis, jaringan tersebut masih dapat melayani permintaan iklan mendatang dalam sesi tersebut.

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

Bagaimana cara mengetahui alasan jaringan mediasi tertentu tidak siap?

AdapterStatus.getDescription() menjelaskan alasan adaptor belum siap untuk menayangkan permintaan iklan.

Apakah callback onUserEarnedReward() selalu dipanggil sebelum callback onAdDismissedFullScreenContent()?

Untuk iklan Google, semua panggilan onUserEarnedReward() terjadi sebelum onAdDismissedFullScreenContent(). Untuk iklan yang ditayangkan melalui mediasi, penerapan SDK jaringan iklan pihak ketiga menentukan urutan callback. Untuk SDK jaringan iklan yang menyediakan satu callback penutup dengan informasi reward, adaptor mediasi memanggil onUserEarnedReward() sebelum onAdDismissedFullScreenContent().

Contoh di GitHub

Langkah berikutnya

Pelajari topik berikut: