Misurare gli acquisti in-app

Seleziona la piattaforma: iOS+ Android Unity


Gli acquisti in-app (IAP) sono contenuti o funzionalità digitali che puoi vendere in un' app per dispositivi mobili tramite l'Apple App Store o Google Play in modo che questa non debba elaborare transazioni finanziarie. Tra gli acquisti in-app figurano, ad esempio, contenuti su abbonamento o elementi di gioco speciali.

Analytics mostra gli eventi IAP nel report Acquisti in-app.

Per le app Unity, l'SDK Analytics si integra con l'Apple App Store su iOS e Google Play su Android.

Nella maggior parte dei casi, l'SDK Analytics raccoglie automaticamente gli eventi IAP senza richiedere chiamate API nell'app. I requisiti di configurazione e il comportamento di monitoraggio dipendono dalla piattaforma di destinazione:

  • Android: Google Play transazioni vengono monitorate automaticamente dopo il collegamento a Google Play. senza dover apportare modifiche al codice.
  • iOS (StoreKit 1): le transazioni dell'App Store effettuate utilizzando le API StoreKit 1 vengono monitorate automaticamente. senza dover apportare modifiche al codice.
  • iOS (StoreKit 2): le transazioni dell'App Store effettuate utilizzando le API StoreKit 2 devono essere registrate manualmente utilizzando l'API Unity personalizzata.

Prima di iniziare

Implementazione

Android

Per le app Android, puoi misurare gli eventi IAP non appena ti colleghi a Google Play. Non devi scrivere codice personalizzato nel progetto Unity per misurare gli acquisti.

iOS

Per le app iOS, la strategia di implementazione dipende dal fatto che l'app utilizzi StoreKit 1 o StoreKit 2:

StoreKit 1

Se il flusso di acquisto utilizza StoreKit 1, l'SDK Analytics registra automaticamente gli eventi IAP. Non devi aggiungere codice personalizzato per monitorare questi acquisti.

StoreKit 2

Se il flusso di acquisto utilizza StoreKit 2, devi registrare manualmente le transazioni verificate passando la stringa dell'identificatore della transazione a 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");
        }
    });
}
Recuperare l'ID transazione utilizzando gli acquisti in-app di Unity

Se il tuo progetto utilizza il pacchetto standard per gli acquisti in-app di Unity (UnityEngine.Purchasing), il metodo per recuperare l'ID transazione dipende dalla versione dell'API per gli acquisti in-app di Unity che stai utilizzando.

Callback di conferma utilizzando gli acquisti in-app di Unity versione 5.2 o successive

In Unity IAP versione 5.2 e successive, puoi accedere alle informazioni sulle transazioni specifiche di Apple direttamente dall'oggetto Order nel callback di conferma. Puoi passare OriginalTransactionID o l'ID transazione corrente a 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 legacy

Se utilizzi il callback ProcessPurchase legacy, puoi estrarre l'identificatore della transazione dal prodotto acquistato:

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;
}