Menambahkan Iklan Video Berhadiah ke Aplikasi Kesatuan

Dengan Audience Network, Anda dapat memonetisasi aplikasi Android dan iOS dengan iklan Facebook. Iklan video berhadiah adalah pengalaman layar penuh tempat pengguna melihat iklan video dengan imbalan sesuatu yang bernilai, seperti mata uang virtual, item dalam-aplikasi, konten eksklusif, dan lainnya. Pengalaman iklan adalah video pendek dan kartu akhir dengan ajakan bertindak. Setelah menyelesaikan video selengkapnya, Anda akan menerima panggilan balik untuk memberi hadiah yang disarankan kepada pengguna.

Pastikan Anda sudah membaca tuntas panduan Memulai Audience Network dan Memulai Unity sebelum melanjutkan.

Langkah-langkah Iklan Video Berhadiah

Langkah 1: Menginisialisasi Iklan Video Berhadiah

Langkah 2: Menambahkan Peristiwa Panggilan Balik

Langkah 3: Memuat Iklan

Langkah 4: Menampilkan Iklan

Langkah 1: Menginisialisasi Iklan Video Berhadiah

Langkah pertama untuk menampilkan iklan video berhadiah adalah membuat objek RewardedVideoAd dalam skrip C# yang dilampirkan ke GameObject.

...
using AudienceNetwork;
...

public class RewardedVideoAdTest : MonoBehaviour
{
    public void LoadRewardedVideo()
    {
        // Create the rewarded video unit with a placement ID (generate your own on the Facebook app settings).
        // Use different ID for each ad placement in your app.
        this.rewardedVideoAd = new RewardedVideoAd("YOUR_PLACEMENT_ID");

        this.rewardedVideoAd.Register(this.gameObject);

        // Set delegates to get notified on changes or when the user interacts with the ad.
        this.rewardedVideoAd.RewardedVideoAdDidLoad = (delegate() {
            Debug.Log("RewardedVideo ad loaded.");
            this.isLoaded = true;
        });
        this.rewardedVideoAd.RewardedVideoAdDidFailWithError = (delegate(string error) {
            Debug.Log("RewardedVideo ad failed to load with error: " + error);
        });
        this.rewardedVideoAd.RewardedVideoAdWillLogImpression = (delegate() {
            Debug.Log("RewardedVideo ad logged impression.");
        });
        this.rewardedVideoAd.RewardedVideoAdDidClick = (delegate() {
            Debug.Log("RewardedVideo ad clicked.");
        });

        this.rewardedVideoAd.RewardedVideoAdDidClose = (delegate() {
            Debug.Log("Rewarded video ad did close.");
            if (this.rewardedVideoAd != null) {
                this.rewardedVideoAd.Dispose();
            }
        });

        // Initiate the request to load the ad.
        this.rewardedVideoAd.LoadAd();
    }
}

Konstruktor untuk RewardedVideoAd memiliki parameter berikut:

  • placementId - ID Penempatan Audience Network untuk unit iklan video berhadiah ini.

Langkah 2: Menambahkan Peristiwa Panggilan Balik

Selanjutnya, Anda dapat menerapkan beberapa panggilan balik untuk berlangganan peristiwa siklus hidup iklan. Dengarkan peristiwa ini dengan mendaftarkan delegasi untuk peristiwa tersebut, seperti yang ditunjukkan pada contoh di bawah ini:

...
// Set delegates to get notified on changes or when the user interacts with the ad.
this.rewardedVideoAd.RewardedVideoAdDidLoad = (delegate() {
    Debug.Log("RewardedVideo ad loaded.");
    this.isLoaded = true;
});
this.rewardedVideoAd.RewardedVideoAdDidFailWithError = (delegate(string error) {
    Debug.Log("RewardedVideo ad failed to load with error: " + error);
});
this.rewardedVideoAd.RewardedVideoAdWillLogImpression = (delegate() {
    Debug.Log("RewardedVideo ad logged impression.");
});
this.rewardedVideoAd.RewardedVideoAdDidClick = (delegate() {
    Debug.Log("RewardedVideo ad clicked.");
});

this.rewardedVideoAd.RewardedVideoAdDidClose = (delegate() {
    Debug.Log("Rewarded video ad did close.");
    if (this.rewardedVideoAd != null) {
        this.rewardedVideoAd.Dispose();
    }
});
...

Callback untuk Aktivitas Iklan Rusak di Unity Android.

Ini hanya relevan untuk Android.

Saat ini, game Unity untuk Android hanya mendukung Unity utama Activity untuk menggunakan launchMode dari singleTask. Lihat Dokumen Unity untuk manifes Android dan dokumen Android untuk aktivitas.

Karena kami menggunakan Activity untuk menampilkan Interstitial dan iklan Rewarded Video, aktivitas iklan tersebut bisa rusak jika pengguna membuka aplikasi dan menutupnya dengan tidak benar, kemudian membukanya kembali menggunakan ikon, bukan pengalih aplikasi. Anda dapat menggunakan callback berikut dan memastikan bahwa iklan ini sudah ditutup oleh pengguna lain:

Untuk Interstisial:

this.interstitialAd.interstitialAdDidClose = (delegate() { Debug.Log("Interstitial ad did close."); this.didClose = true; if (this.interstitialAd != null) { this.interstitialAd.Dispose(); } }); #if UNITY_ANDROID /* * Hanya relevan untuk Android. * Callback ini hanya akan dipicu jika aktivitas Interstisial * rusak tanpa ditutup dengan benar. Hal ini dapat terjadi jika * aplikasi dengan launchMode:singleTask (seperti game Unity) membuka * latar belakang dan kemudian dibuka kembali dengan mengetuk ikon. */ this.interstitialAd.interstitialAdActivityDestroyed = (delegate() { if (!this.didClose) { Debug.Log("Interstitial activity destroyed without being closed first."); Debug.Log("Game should resume."); } }); #endif 

Untuk Video Berinsentif:

this.rewardedVideoAd.rewardedVideoAdDidClose = (delegate() { Debug.Log("Rewarded video ad did close."); this.didClose = true; if (this.rewardedVideoAd != null) { this.rewardedVideoAd.Dispose(); } }); #if UNITY_ANDROID /* * Hanya relevan untuk Android. * Callback ini hanya akan dipicu jika aktivitas Video Berinsentif * rusak tanpa ditutup dengan benar. Hal ini dapat terjadi jika * aplikasi dengan launchMode:singleTask (seperti game Unity) membuka * latar belakang dan kemudian dibuka kembali dengan mengetuk ikon. */ this.rewardedVideoAd.rewardedVideoAdActivityDestroyed = (delegate() { if (!this.didClose) { Debug.Log("Rewarded video activity destroyed without being closed first."); Debug.Log("Game should resume. User should not get a reward."); } }); #endif 

Langkah 3: Memuat Iklan

Setelah RewardedVideoAd diinstansiasikan, langkah selanjutnya adalah memuat iklan. Itu dilakukan dengan memanggil metode loadAd.

Pada contoh yang ditampilkan di atas, berikut ini cara inisiasi pemuatan iklan:

...
this.rewardedVideoAd.LoadAd();
...

Langkah 4: Menampilkan Iklan

Terakhir, setelah iklan dimuat, Anda dapat memanggil metode Show untuk me-render iklan video berhadiah di layar. Contoh: Anda dapat membuat fungsi untuk ShowRewardedVideo, dan memanggil fungsi ini ketika tiba saatnya untuk menampilkan iklan:

public void ShowRewardedVideo()
{
    if (this.isLoaded) {
        this.rewardedVideoAd.Show();
        this.isLoaded = false;
    } else {
        Debug.Log("Ad not loaded. Click load to request an ad.");
    }
}

Validasi Hadiah Sisi Server

Ini bersifat opsional! Anda tidak perlu menerapkan validasi sisi server untuk menggunakan iklan video berhadiah. Ini hanya diperlukan jika Anda memutuskan untuk memvalidasi hadiah di server Anda sendiri guna meningkatkan keamanan dengan memperkenalkan langkah validasi di server Anda sendiri. Harap beri penerbit endpoint ke perwakilan Facebook Anda untuk mengaktifkan fitur ini.

Ringkasan

Jika Anda mengelola sisi server hadiah pengguna Anda, maka Facebook menawarkan sebuah solusi untuk menerapkannya secara aman menggunakan teknik validasi. Server kami akan berkomunikasi dengan endpoint https yang ditentukan untuk memvalidasi setiap impresi iklan dan memvalidasi apakah hadiah harus diberikan atau tidak.

  1. Audience Network SDK meminta iklan video berhadiah dengan parameter berikut:
    • placementId: ID Penempatan Audience Network
    • RewardData - Objek RewardData berisi UserId mewakili ID pengguna dan Currency mewakili hadiah dalam game yang sebenarnya.
  2. Setelah menyelesaikan video, Server Facebook mengirimkan nilai ini ke endpoint tertentu Anda, beserta Rahasia Aplikasi dan ID Transaksi Unik.
  3. Setelah menerima, server memvalidasi permintaan dan menanggapi seperti berikut:
    • 200 response: permintaan valid dan hadiah harus disampaikan
    • Non 200 response: permintaan tidak valid dan hadiah tidak dapat disampaikan.
  4. Setelah video selesai, kartu akhir disajikan dan salah satu dari peristiwa berikut akan diaktifkan.
    • RewardedVideoAdDidSucceed - terpicu hanya jika tanggapan 200 diterima selama langkah 3.
    • RewardedVideoAdDidFail - terpicu jika tanggapan non-200 diterima selama langkah 3.

Contoh URL yang akan mencapai endpoint penerbit Anda, dari server Facebook: https://www.end_point_Anda.com/?token=RAHASIA_APLIKASI&puid=ID_PENGGUNA&pc=ID_HADIAH&ptid=ID_TRANSAKSI_UNIK

Alur kerjanya akan terlihat seperti ini:

Penerapan

Setelah menginisialisasi objek video berhadiah, Anda harus meneruskan ID Pengguna dan jumlah Hadiah ke data iklan berhadiah sebelum memuat iklan. Hal ini dapat dilakukan dengan kelas RewardData. Baik ID Pengguna maupun jumlah Hadiah adalah string. Contoh:

public class RewardedVideoAdTest : MonoBehaviour
{
  ...
  private bool isLoaded;
  private RewardedVideoAd rewardedVideoAd;

  public void LoadRewardedVideo()

    //Set the rewarded ad data
    RewardData rewardData = new RewardData();
    rewardData.UserId = "USER_ID";
    rewardData.Currency = "REWARD_ID";

    // Instantiate RewardedVideoAd with reward data
    this.rewardedVideoAd = new RewardedVideoAd("YOUR_PLACEMENT_ID", rewardData);
    this.rewardedVideoAd.Register(this.gameObject);

    // Set delegates to get notified on changes or when the user interacts with the ad.
    this.rewardedVideoAd.RewardedVideoAdDidLoad = (delegate() {
        Debug.Log("RewardedVideo ad loaded.");
        this.isLoaded = true;
    });
    this.rewardedVideoAd.RewardedVideoAdDidFailWithError = (delegate(string error) {
        Debug.Log("RewardedVideo ad failed to load with error: " + error);
    });
    this.rewardedVideoAd.RewardedVideoAdWillLogImpression = (delegate() {
        Debug.Log("RewardedVideo ad logged impression.");
    });
    this.rewardedVideoAd.RewardedVideoAdDidClick = (delegate() {
        Debug.Log("RewardedVideo ad clicked.");
    });
    this.rewardedVideoAd.RewardedVideoAdDidClose = (delegate() {
        Debug.Log("Rewarded video ad did close.");
        if (this.rewardedVideoAd != null) {
            this.rewardedVideoAd.Dispose();
        }
    });

    // For S2S validation you need to register the following two callback
    this.rewardedVideoAd.RewardedVideoAdDidSucceed = (delegate() {
        Debug.Log("Rewarded video ad validated by server");
    });
    this.rewardedVideoAd.RewardedVideoAdDidFail = (delegate() {
        Debug.Log("Rewarded video ad not validated, or no response from server");
    });       

    this.rewardedVideoAd.loadAd();
  }
  ...
}

Agar aplikasi Anda diberi tahu apakah hadiah telah divalidasi atau tidak, Anda harus menerapkan panggilan balik RewardedVideoAdDidSucceed dan RewardedVideoAdDidFail, selain panggilan balik lainnya untuk RewardedVideoAd.

Setelah iklan dimuat, iklan dapat di-render dengan metode Show seperti RewardedVideoAd biasa.

Harap diperhatikan - panggilan balik validasi server dapat terjadi setelah kartu akhir diabaikan oleh pengguna. Anda tidak boleh melakukan deallocate objek video berhadiah hingga setelah salah satu panggilan balik ini.

Langkah Berikutnya

Ikuti panduan kami untuk mengintegrasikan berbagai Format Iklan ke dalam aplikasi Unity Anda:

Setelah Anda siap meluncurkan aplikasi Anda dan memonetisasi, kirimkan aplikasi Anda untuk tinjauan setelah memastikannya mematuhi kebijakan Audience Network dan standar komunitas Facebook.