Mesurer les achats via une application

Sélectionnez une plate-forme : iOS+ Android Unity


Les achats via une application désignent des contenus ou fonctionnalités numériques que vous pouvez vendre dans une application mobile via l'App Store d'Apple ou Google Play. Cela évite d'effectuer des transactions financières dans votre application. Il peut s'agir, par exemple, de contenus vendus par abonnement ou de pièces spéciales dans un jeu.

Analytics : affiche les événements d'achat via une application dans le rapport "Achats via une application".

Pour les applications Unity, le SDK Analytics s'intègre à l'App Store d'Apple sur iOS et à Analytics sur Android.Google Play

Dans la plupart des cas, le SDK Analytics collecte automatiquement les événements liés aux achats via l'application sans nécessiter d'appels d'API dans votre application. Les exigences de configuration et le comportement de suivi dépendent de la plate-forme cible :

  • Android : les transactions Google Play sont suivies automatiquement après l'association de Google Play. Aucune modification de code n'est requise.
  • iOS (StoreKit 1) : les transactions de l'App Store effectuées à l'aide des API StoreKit 1 sont suivies automatiquement. Aucune modification de code n'est requise.
  • iOS (StoreKit 2) : les transactions de l'App Store effectuées à l'aide des API StoreKit 2 doivent être enregistrées manuellement à l'aide de l'API Unity personnalisée.

Avant de commencer

Implémentation

Android

Pour les applications Android, vous pouvez mesurer les événements d'achats via l'application dès que vous établissez un lien vers Google Play. Vous n'avez pas besoin d'écrire de code personnalisé dans votre projet Unity pour mesurer les achats.

iOS

Pour les applications iOS, la stratégie d'implémentation dépend de l'utilisation de StoreKit 1 ou StoreKit 2 par votre application :

StoreKit 1

Si votre parcours d'achat utilise StoreKit 1, le SDK Analytics enregistre automatiquement les événements d'achats via l'application. Vous n'avez pas besoin d'ajouter de code personnalisé pour suivre ces achats.

StoreKit 2

Si votre parcours d'achat utilise StoreKit 2, vous devez consigner manuellement les transactions validées en transmettant la chaîne d'identifiant de transaction à 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");
        }
    });
}
Récupérer l'ID de transaction à l'aide d'Unity IAP

Si votre projet utilise le package d'achats via l'application standard d'Unity (UnityEngine.Purchasing), la méthode de récupération de l'ID de transaction dépend de la version de l'API Unity IAP que vous utilisez.

Callback de confirmation avec Unity IAP v5.2 ou version ultérieure

Dans Unity IAP v5.2 et versions ultérieures, vous pouvez accéder aux informations de transaction spécifiques à Apple directement à partir de l'objet Order dans le rappel de confirmation. Vous pouvez transmettre OriginalTransactionID ou l'ID de transaction actuel à 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
}
Ancien rappel ProcessPurchase

Si vous utilisez l'ancien rappel ProcessPurchase, vous pouvez extraire l'identifiant de transaction du produit acheté :

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