| 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
Configurez votre projet Firebase et le code de base 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 suivantes :
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 Firebase Unity version 13.12.0 ou ultérieure.
Assurez-vous de bien connaître les API d'achats via une application en consultant la documentation spécifique à la plate-forme pour Google Play Billing, StoreKit d'Apple et Unity In-App Purchasing.
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; }