Iklan reward

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

Iklan reward adalah iklan yang memberikan opsi kepada pengguna untuk berinteraksi dengan imbalan berupa reward dalam aplikasi. Panduan ini menunjukkan cara mengintegrasikan iklan reward dari AdMob ke dalam aplikasi Unity. Baca beberapa kisah sukses pelanggan: studi kasus 1, studi kasus 2.

Prasyarat

  • Plugin Unity 3.16.0 atau yang lebih tinggi.
  • Selesaikan Memulai. Aplikasi Unity Anda seharusnya sudah mengimpor plugin Google Mobile Ads Unity.

Membuat objek iklan reward

Iklan reward diminta dan ditampilkan oleh objek RewardedAd. Langkah pertama yang diperlukan untuk menampilkan iklan reward adalah membuat instance objek RewardedAd dengan memanggil konstruktor dengan ID unit iklan yang akan digunakan untuk memuat iklan. Hal ini ditunjukkan dalam cuplikan kode berikut:

Untuk integrasi iklan yang lebih mudah menggunakan Unity Editor, coba Ad Placements Beta yang baru.

using UnityEngine.Events;
using UnityEngine;
using GoogleMobileAds.Api;
using GoogleMobileAds.Common;
using UnityEngine.UI;
using System;
using System.Collections.Generic;

public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        ...

        this.rewardedAd = new RewardedAd(adUnitId);
    }
}

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 iklan reward Android dan iOS:

Android

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

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

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

Memuat iklan

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

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        ...

        this.rewardedAd = new RewardedAd(adUnitId);

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        this.rewardedAd.LoadAd(request);
    }
}

[Opsional] Memvalidasi callback verifikasi sisi server (SSV)

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

Contoh kode berikut menunjukkan cara menetapkan opsi SSV setelah iklan reward dimuat.

void HandleRewardedAdLoaded(RewardedAd ad, AdFailedToLoadEventArgs error)
{
    // Create and pass the SSV options to the rewarded ad.
    var options = new ServerSideVerificationOptions
                          .Builder()
                          .SetCustomData("SAMPLE_CUSTOM_DATA_STRING")
                          .Build()
    ad.SetServerSideVerificationOptions(options);
}

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

Peristiwa iklan

Untuk menyesuaikan lebih lanjut perilaku iklan, Anda dapat terhubung ke sejumlah peristiwa dalam siklus proses iklan: memuat, membuka, menutup, dan sebagainya. Dengarkan peristiwa ini dengan mendaftarkan delegasi untuk pengendali peristiwa yang sesuai. Peristiwa yang paling penting adalah OnUserEarnedReward, yang dipanggil saat pengguna diberi reward karena menonton video. Anda juga dapat menerapkan peristiwa iklan lainnya, seperti yang ditunjukkan di bawah ini.

using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        string adUnitId;
        #if UNITY_ANDROID
            adUnitId = "ca-app-pub-3940256099942544/5224354917";
        #elif UNITY_IPHONE
            adUnitId = "ca-app-pub-3940256099942544/1712485313";
        #else
            adUnitId = "unexpected_platform";
        #endif

        this.rewardedAd = new RewardedAd(adUnitId);

        // Called when an ad request has successfully loaded.
        this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        // Called when an ad request failed to load.
        this.rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
        // Called when an ad is shown.
        this.rewardedAd.OnAdOpening += HandleRewardedAdOpening;
        // Called when an ad request failed to show.
        this.rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow;
        // Called when the user should be rewarded for interacting with the ad.
        this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        // Called when the ad is closed.
        this.rewardedAd.OnAdClosed += HandleRewardedAdClosed;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        this.rewardedAd.LoadAd(request);
    }

    public void HandleRewardedAdLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardedAdLoaded event received");
    }

    public void HandleRewardedAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print(
            "HandleRewardedAdFailedToLoad event received with message: "
                             + args.Message);
    }

    public void HandleRewardedAdOpening(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardedAdOpening event received");
    }

    public void HandleRewardedAdFailedToShow(object sender, AdErrorEventArgs args)
    {
        MonoBehaviour.print(
            "HandleRewardedAdFailedToShow event received with message: "
                             + args.Message);
    }

    public void HandleRewardedAdClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardedAdClosed event received");
    }

    public void HandleUserEarnedReward(object sender, Reward args)
    {
        string type = args.Type;
        double amount = args.Amount;
        MonoBehaviour.print(
            "HandleRewardedAdRewarded event received for "
                        + amount.ToString() + " " + type);
    }
}

Peristiwa OnUserEarnedReward memberikan argumen peristiwa khusus. Peristiwa ini meneruskan instance Reward dengan Type dan Amount yang mendeskripsikan reward yang diberikan kepada pengguna:

public void HandleUserEarnedReward(object sender, Reward args)
{
    string type = args.Type;
    double amount = args.Amount;
     MonoBehaviour.print(
          "HandleRewardedAdRewarded event received for "
              + amount.ToString() + " " + type);
}

Peristiwa iklan yang tersedia

OnAdLoaded
Dipanggil saat iklan telah selesai dimuat.
OnAdFailedToLoad
Dipanggil saat iklan gagal dimuat. Properti Message dari AdErrorEventArgs yang diberikan menjelaskan jenis kegagalan yang terjadi.
OnAdOpening
Dipanggil saat iklan ditampilkan, yang menutupi layar perangkat. Ini adalah tempat yang baik untuk menjeda output audio aplikasi atau game loop Anda, jika perlu.
OnAdFailedToShow
Dipanggil saat iklan gagal ditampilkan. Properti Message dari AdErrorEventArgs yang diberikan menjelaskan jenis kegagalan yang terjadi.
OnUserEarnedReward
Dipanggil saat pengguna harus mendapatkan reward karena menonton video. Parameter Reward menjelaskan reward yang akan diberikan kepada pengguna.
OnAdClosed
Dipanggil saat iklan video reward ditutup karena pengguna mengetuk ikon tutup atau menggunakan tombol kembali. Jika aplikasi menjeda output audio atau game loop, ini adalah tempat yang tepat untuk melanjutkannya.

Tampilkan iklan

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

Untuk menampilkan iklan reward, periksa metode IsLoaded() untuk memverifikasi bahwa pemuatan telah selesai, lalu panggil show(). Berikut ini contoh cara melakukannya:

private void UserChoseToWatchAd()
{
  if (this.rewardedAd.IsLoaded()) {
    this.rewardedAd.Show();
  }
}

Menggunakan OnAdClosed untuk melakukan pramuat iklan reward berikutnya

RewardedAd adalah objek yang hanya dapat digunakan satu kali. Artinya, setelah iklan reward ditampilkan, objek tidak dapat digunakan untuk memuat iklan lainnya. Untuk meminta iklan reward lain, Anda harus membuat objek RewardedAd baru.

Praktik terbaiknya adalah memuat iklan reward lain di peristiwa iklan OnAdClosed sehingga iklan reward berikutnya mulai dimuat begitu iklan sebelumnya ditutup:

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void CreateAndLoadRewardedAd()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/5224354917";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/1712485313";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        this.rewardedAd = new RewardedAd(adUnitId);

        this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        this.rewardedAd.OnAdClosed += HandleRewardedAdClosed;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        this.rewardedAd.LoadAd(request);
    }

...

    public void HandleRewardedAdClosed(object sender, EventArgs args)
    {
        this.CreateAndLoadRewardedAd();
    }
}

Memuat beberapa iklan reward

Untuk memuat beberapa iklan reward, ikuti langkah-langkah yang diuraikan di bagian membuat objek iklan reward dan memuat 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.

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd gameOverRewardedAd;
    private RewardedAd extraCoinsRewardedAd;
    ...
    public void Start()
    {
        ...

        this.gameOverRewardedAd = CreateAndLoadRewardedAd(adUnitId);
        this.extraCoinsRewardedAd = CreateAndLoadRewardedAd(adUnitId);
    }

    public RewardedAd CreateAndLoadRewardedAd(string adUnitId)
    {
        RewardedAd rewardedAd = new RewardedAd(adUnitId);

        rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        rewardedAd.OnAdClosed += HandleRewardedAdClosed;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        rewardedAd.LoadAd(request);
        return rewardedAd;
    }
}

Contoh