| Sélectionnez la 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 Analytics SDK s'intègre à l'App Store d'Apple sur iOS et Google Play sur Android.
Dans la plupart des cas, le Analytics SDK collecte automatiquement les événements d'achat via une 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 sont suivies automatiquement après l'association de Google Play.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
Configurez votre projet Firebase et le code de votre application comme décrit dans Premiers pas avec Google Analytics.
Associez votre projet Firebase à une propriété Google Analytics 4.
Assurez-vous que votre application répond aux exigences de configuration spécifiques à la plate-forme :
iOS (StoreKit 1) : aucune configuration supplémentaire n'est requise. Le suivi StoreKit 1 fonctionne automatiquement.
iOS (StoreKit 2) : assurez-vous que votre application utilise le SDK Unity Firebase version 13.12.0 ou ultérieure.
Familiarisez-vous avec les API d'achat via une application en consultant la documentation spécifique à la plate-forme pour Google Play Billing, Apple StoreKit, et Unity In-App Purchasing.
Implémentation
Android
Pour les applications Android, vous pouvez mesurer les événements d'achat via une application dès que vous les associez à 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 de StoreKit 2 par votre application :
StoreKit 1
Si votre parcours d'achat utilise StoreKit 1, le SDK Analytics enregistre automatiquement les événements d'achat via une 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 enregistrer 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 de Unity IAP
Si votre projet utilise le package standard d'achat via une application de 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.
Rappel de confirmation à l'aide de 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 }
Rappel ProcessPurchase hérité
Si vous utilisez le rappel ProcessPurchase hérité, 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; }
Enregistrer manuellement les événements d'achat via une application
Si vous devez suivre les achats via une application effectués en dehors du Play Store ou de l'App Store (par exemple, via d'autres plates-formes de téléchargement d'applications, des processus de paiement personnalisés ou d'autres places de marché), vous pouvez enregistrer manuellement ces transactions à l'aide de l'événement IN_APP_PURCHASE.
using Firebase.Analytics; public void LogCustomInAppPurchase(string productName, double value, string currencyCode, int quantity = 1) { FirebaseAnalytics.LogEvent( FirebaseAnalytics.EventInAppPurchase, new Parameter(FirebaseAnalytics.ParameterProductName, productName), new Parameter(FirebaseAnalytics.ParameterValue, value), new Parameter(FirebaseAnalytics.ParameterCurrency, currencyCode), new Parameter(FirebaseAnalytics.ParameterQuantity, quantity) ); }