Menambahkan fitur khusus produk reward

Salah satu metode agar pengguna dapat mengakses produk dan manfaat dalam aplikasi Anda adalah dengan membuat produk reward, atau item yang diterima pengguna setelah mereka menonton iklan video. Dengan menyediakan produk reward, Anda memungkinkan pengguna untuk mendapatkan hadiah dan manfaat dalam aplikasi tanpa melakukan pembelian langsung.

Dokumen ini menjelaskan cara menerapkan fungsionalitas khusus untuk produk reward. Bagian diagram alur kerja di halaman ini menggambarkan prosesnya.

Mengidentifikasi produk reward aplikasi Anda

Produk reward memiliki SkuType dari INAPP. Agar pengguna dapat menonton banyak iklan dan mendapatkan banyak reward, produk-produk tersebut harus digunakan.

Agar dapat menawarkan produk reward pada pengguna, Anda harus mendapatkan SkuDetails untuk produk tersebut. Untuk melakukannya, panggil querySkuDetailsAsync() dengan SkuType.INAPP sebagai tipe produk.

Mendeklarasikan iklan yang sesuai usia

Untuk membantu memfasilitasi kepatuhan terhadap kewajiban hukum yang terkait dengan anak-anak dan pengguna di bawah umur, termasuk Children's Online Privacy Protection Act (COPPA) dan General Data Protection Regulation (GDPR), aplikasi Anda harus mendeklarasikan iklan mana yang dapat diperlakukan sebagai ditujukan untuk anak di Amerika Serikat atau ditujukan untuk pengguna di bawah persyaratan usia dewasa yang berlaku di negara mereka. Pusat Bantuan AdMob menjelaskan kapan Anda perlu memberi tag perlakuan untuk anak-anak dan tag perlakuan untuk anak di bawah usia dewasa pada permintaan iklan Anda, serta dampak dari melakukannya.

Saat membuat klien penagihan untuk aplikasi Anda, pertimbangkan apakah permintaan iklan reward tersebut harus diperlakukan sebagai ditujukan untuk anak atau ditujukan untuk pengguna berusia di bawah usia dewasa. Jika permintaan iklan tersebut harus menerapkan pembatasan ini, panggil metode setChildDirected() dan setUnderAgeOfConsent(), dengan meneruskan nilai yang sesuai ke tiap metode.

Cuplikan kode berikut menunjukkan cara mendeklarasikan bahwa iklan video harus sesuai untuk anak-anak atau untuk pengguna di bawah umur yang memerlukan persetujuan:

Kotlin

val billingClient = BillingClient.newBuilder(context)
        .setListener(this)
        .setChildDirected(ChildDirected.CHILD_DIRECTED)
        .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT)
        .build()

Java

BillingClient billingClient =
    BillingClient.newBuilder(context)
        .setListener(this)
        .setChildDirected(ChildDirected.CHILD_DIRECTED)
        .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT)
        .build();

Memuat iklan video

Sebelum menampilkan opsi menonton iklan video kepada pengguna agar mereka bisa menerima produk reward, Anda perlu memuat video. Untuk melakukannya, buat objek RewardLoadParams, dengan mengaitkannya dengan objek SkuDetails yang merepresentasikan produk reward. Lalu, panggil metode loadRewardedSku() klien penagihan, dengan meneruskan objek RewardLoadParams dan objek RewardResponseListener.

Pemroses RewardResponseListener akan diberi tahu setelah video selesai dimuat. Pemroses juga akan diberi tahu jika video tidak tersedia, atau jika terjadi error lain, seperti waktu tunggu server habis.

Untuk mempertahankan performa perangkat saat memuat video yang terkait dengan produk reward aplikasi Anda, selalu ingat praktik terbaik berikut:

  • Muat maksimal tiga SKU produk reward pada satu waktu.
  • Coba muat video setiap kali pengguna memasuki aplikasi Anda. Langkah ini membantu Anda memeriksa apakah video masih dimuat dan tersedia.
  • Saat memutuskan kapan waktunya memuat video, pilih keseimbangan antara penggunaan bandwidth dan responsivitas aplikasi yang paling sesuai untuk kasus penggunaan Anda:

    • Pada waktu paling awal, muat video setelah Anda memanggil getSkuDetails() untuk produk reward yang terkait. Aplikasi Anda akan tetap sangat responsif, tetapi Anda dapat memboroskan data jaringan dengan memuat video yang tidak pernah ditonton pengguna.
    • Pada waktu paling akhir, muat video saat pengguna membuka halaman tempat video ditampilkan. Pada kasus ini, aplikasi Anda tidak akan memboroskan bandwidth, tetapi pengguna mungkin harus menunggu beberapa saat sebelum tombol untuk menonton video dapat diklik.

Cuplikan kode berikut menunjukkan proses pemuatan iklan video yang diputar sebelum pengguna menerima produk reward:

Kotlin

if (skuDetails.isRewarded()) {
    val params = RewardLoadParams.Builder()
            .setSkuDetails(skuDetails)
            .build()
    mBillingClient.loadRewardedSku(params.build(),
            object : RewardResponseListener {
        override fun onRewardResponse(@BillingResponse responseCode : Int) {
            if (responseCode == BillingResponse.OK) {
                // Enable the reward product, or make
                // any necessary updates to the UI.
            }
        }
    })
}

Java

if (skuDetails.isRewarded()) {
    RewardLoadParams.Builder params = RewardLoadParams.newBuilder();
    params.setSkuDetails(skuDetails);
    mBillingClient.loadRewardedSku(params.build(),
        new RewardResponseListener() {
            @Override
            public void onRewardResponse(int responseCode) {
                if (responseCode == BillingResponse.OK) {
                      // Enable the reward product, or make
                      // any necessary updates to the UI.
                  }
            }
        });
}

Memberikan pembelian reward ke pengguna

Jika Library Layanan Penagihan Google Play berhasil memuat video yang terkait dengan produk reward, yaitu jika RewardResponseListener menerima responseCode dari BillingResponse.OK, Anda dapat meluncurkan alur penagihan.

Mulailah memutar iklan untuk produk reward dengan memanggil launchBillingFlow(), seperti yang Anda lakukan untuk semua jenis produk dalam aplikasi lainnya. Meskipun pengguna tidak melakukan pembelian langsung untuk menerima produk reward, Anda tetap perlu mengaktifkan alur penagihan agar pengguna dapat memperoleh dan menggunakan produk tersebut.

Memakai pembelian

Untuk memberi tahu klien penagihan bahwa pengguna telah menerima dan memakai produk reward, tangani pembelian dalam metode onPurchasesUpdated() pada pemroses klien penagihan Anda. Perhatikan bahwa pembelian produk reward perlu dipakai.

Menguji produk reward

Untuk menguji bagaimana aplikasi Anda memuat iklan video dan memberikan produk reward kepada pengguna, gunakan penguji berlisensi, yang secara default mendapatkan iklan uji sebagai pengganti iklan sebenarnya. Guna mempelajari cara menyiapkan akun untuk penguji tersebut, lihat Melakukan pengujian pengguna aplikasi Layanan Penagihan Google Play.

Metode pengujian lain adalah Anda harus menggunakan ID produk android.test.reward. Produk khusus ini adalah nama yang dicadangkan di Layanan Penagihan Google Play, jadi Anda tidak perlu menambahkannya ke daftar produk dalam aplikasi di Konsol Play.

Perhatian: Saat menguji produk reward aplikasi Anda, jangan gunakan produk sebenarnya; jika tidak, akun Anda dapat ditandai sebagai spam atau akun penipuan.

Setelah pengujian selesai, pastikan Anda mengganti android.test.reward dengan ID produk untuk produk reward Anda yang sebenarnya sebelum men-deploy aplikasi produksi kepada pengguna akhir.

Diagram alur kerja produk reward

Diagram urutan berikut menunjukkan bagaimana pengguna, aplikasi Anda, dan Library Layanan Penagihan Google Play bekerja sama untuk menampilkan iklan video dan memberi pengguna akses ke produk reward:

Diagram urutan yang menunjukkan protokol produk reward
Gambar 1. Langkah-langkah untuk menyelesaikan pembelian produk reward menggunakan Layanan Penagihan Google Play