Mengukur pembelian dalam aplikasii

Pilih platform: iOS+ Android Unity


Pembelian dalam aplikasi (IAP) adalah konten atau fitur digital yang dapat Anda jual di aplikasi seluler melalui Apple App Store atau Google Play sehingga aplikasi Anda tidak perlu memproses transaksi keuangan. Contoh pembelian dalam aplikasi mencakup konten berbasis langganan atau bagian game khusus.

Analytics menampilkan peristiwa IAP dalam laporan Pembelian dalam aplikasi.

Untuk aplikasi Unity, Analytics SDK terintegrasi dengan Apple App Store di iOS dan Google Play di Android.

Pada umumnya, Analytics SDK akan otomatis mengumpulkan peristiwa IAP tanpa memerlukan panggilan API di aplikasi Anda. Persyaratan penyiapan dan perilaku pelacakan bergantung pada platform target:

  • Android: Google Play transaksi dilacak secara otomatis setelah menautkan Google Play. Perubahan kode tidak diperlukan.
  • iOS (StoreKit 1): Transaksi App Store yang dilakukan menggunakan StoreKit 1 API dilacak secara otomatis. Perubahan kode tidak diperlukan.
  • iOS (StoreKit 2): Transaksi App Store yang dilakukan menggunakan StoreKit 2 API harus dicatat ke dalam log secara manual menggunakan Unity API kustom.

Sebelum memulai

Penerapan

Android

Untuk aplikasi Android, Anda dapat mengukur peristiwa IAP segera setelah Anda menautkan ke Google Play. Anda tidak perlu menulis kode kustom apa pun di project Unity untuk mengukur pembelian.

iOS

Untuk aplikasi iOS, strategi penerapan bergantung pada apakah aplikasi Anda menggunakan StoreKit 1 atau StoreKit 2:

StoreKit 1

Jika alur pembelian Anda menggunakan StoreKit 1, Analytics SDK akan otomatis mencatat peristiwa IAP ke dalam log. Anda tidak perlu menambahkan kode kustom apa pun untuk melacak pembelian ini.

StoreKit 2

Jika alur pembelian Anda menggunakan StoreKit 2, Anda harus mencatat transaksi yang diverifikasi ke dalam log secara manual dengan meneruskan string ID transaksi ke LogAppleTransactionAsync().

using Firebase.Analytics;

// Call this method once you have completed a StoreKit 2 transaction
// and have the transaction identifier.
public void LogPurchase(string transactionId) {
    FirebaseAnalytics.LogAppleTransactionAsync(transactionId).ContinueWith(task => {
        if (task.IsFaulted || task.IsCanceled) {
            Debug.LogError("Failed to log Apple purchase transaction: " + task.Exception);
        } else {
            Debug.Log("Successfully logged Apple purchase transaction");
        }
    });
}
Mengambil ID transaksi menggunakan Unity IAP

Jika project Anda menggunakan paket Pembelian Dalam Aplikasi standar Unity (UnityEngine.Purchasing), metode untuk mengambil ID transaksi bergantung pada versi Unity IAP API yang Anda gunakan.

Callback konfirmasi menggunakan Unity IAP v5.2+

Di Unity IAP v5.2 dan yang lebih tinggi, Anda dapat mengakses informasi transaksi khusus Apple langsung dari objek Order dalam callback konfirmasi. Anda dapat meneruskan OriginalTransactionID atau ID transaksi saat ini ke LogAppleTransactionAsync():

using UnityEngine.Purchasing;
using Firebase.Analytics;
using Firebase.Extensions;

// Example using Unity IAP v5.2+ Order confirmation
void OnPurchaseConfirmed(Order order) {
    #if UNITY_IOS
    if (order is ConfirmedOrder confirmedOrder) {

        var appleInfo = confirmedOrder.Info.Apple;
        if (appleInfo != null) {

            string transactionId = appleInfo.OriginalTransactionID;

            if (!string.IsNullOrEmpty(transactionId)) {
                // Log the StoreKit 2 transaction with Firebase Analytics
                FirebaseAnalytics.LogAppleTransactionAsync(transactionId).ContinueWithOnMainThread(task => {
                    if (task.IsFaulted || task.IsCanceled) {
                        Debug.LogError($"Failed to log Apple purchase transaction: {task.Exception}");
                    } else {
                        Debug.Log("Successfully logged Apple purchase transaction");
                    }
                });
            } else {
                Debug.LogWarning("Apple OriginalTransactionID is null or empty. Skipping Firebase logging.");
            }
        }
    } else if (order is FailedOrder failedOrder) {
        Debug.Log($"Purchase confirmation bypassed due to failure: {failedOrder.FailureReason}");
    }
    #endif
}
Callback ProcessPurchase lama

Jika menggunakan callback ProcessPurchase lama, Anda dapat mengekstrak ID transaksi dari produk yang dibeli:

using UnityEngine.Purchasing;
using Firebase.Analytics;
using Firebase.Extensions;

public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) {
    // Extract the transaction ID from the purchased product
    string transactionId = args.purchasedProduct.transactionID;

    #if UNITY_IOS
    // Log the StoreKit 2 transaction with Firebase Analytics
    FirebaseAnalytics.LogAppleTransactionAsync(transactionId).ContinueWithOnMainThread(task => {
        if (task.IsFaulted || task.IsCanceled) {
            Debug.LogError($"Failed to log Apple purchase transaction: {task.Exception}");
        } else {
            Debug.Log("Successfully logged Apple purchase transaction");
        }
    });
    #endif

    return PurchaseProcessingResult.Complete;
}