Iklan reward

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

Prasyarat

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

Membuat objek iklan reward

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

Untuk integrasi iklan yang lebih mudah menggunakan Unity Editor, coba Penempatan Iklan 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 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 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 dalam aplikasi Anda sendiri saat coding, pengujian, dan proses debug. Pastikan Anda menggantinya dengan ID unit iklan sendiri sebelum memublikasikan aplikasi.

Untuk informasi selengkapnya tentang cara kerja iklan uji coba 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);
    }
}

Peristiwa iklan

Untuk menyesuaikan perilaku iklan lebih lanjut, Anda dapat terhubung ke sejumlah peristiwa dalam siklus proses iklan: memuat, membuka, menutup, dan sebagainya. Proses peristiwa ini dengan mendaftarkan delegasi untuk pengendali peristiwa yang sesuai. Peristiwa terpenting adalah OnUserEarnedReward, yang dipanggil saat pengguna diberi reward karena menonton video. Anda juga dapat menerapkan peristiwa iklan lain, 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. Ini meneruskan instance Reward dengan Type dan Amount yang menjelaskan 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 dan menutupi layar perangkat. Ini adalah tempat yang baik untuk menjeda output audio aplikasi atau game loop, 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.

Menampilkan iklan

Sebelum menampilkan iklan reward kepada pengguna, mereka harus diberi pilihan eksplisit untuk melihat konten iklan reward sebagai imbalan atas reward yang diberikan. Iklan reward harus selalu menjadi pengalaman keikutsertaan.

Untuk menampilkan iklan reward, periksa metode IsLoaded() untuk memastikan bahwa iklan selesai dimuat, 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 tersebut tidak dapat digunakan untuk memuat iklan lainnya. Untuk meminta iklan reward lainnya, Anda harus membuat objek RewardedAd baru.

Praktik terbaiknya adalah memuat iklan reward lain di peristiwa iklan OnAdClosed sehingga iklan reward berikutnya mulai dimuat segera setelah 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 dalam bagian membuat objek iklan reward dan bagian memuat iklan untuk setiap iklan yang ingin Anda muat. Cuplikan kode di bawah 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