| Selecionar plataforma: | iOS+ Android Unity |
As compras no app consistem em conteúdo ou recursos digitais que podem ser vendidos em um app para dispositivos móveis na App Store da Apple ou no Google Play Dessa forma, seu aplicativo não precisa processar transações financeiras. Exemplos de compras no app incluem conteúdo baseado em assinatura ou peças especiais de jogos.
Analytics mostra os eventos de compra no app no relatório de compras no app.
Para apps Unity, o SDK Analytics se integra à App Store da Apple no iOS e Google Play no Android.
Na maioria dos casos, o Analytics SDK coleta automaticamente eventos de compra no app sem exigir chamadas de API no seu app. Os requisitos de configuração e o comportamento de rastreamento dependem da plataforma segmentada:
- Android: Google Play transações são rastreadas automaticamente após a vinculação Google Play. Não é necessário alterar o código.
- iOS (StoreKit 1): as transações da App Store feitas usando as APIs StoreKit 1 são rastreadas automaticamente. Não é necessário alterar o código.
- iOS (StoreKit 2): as transações da App Store feitas usando as APIs StoreKit 2 precisam ser registradas manualmente usando a API Unity personalizada.
Antes de começar
Configure o projeto do Firebase e a base de código do app conforme descrito em Primeiras etapas com Google Analytics.
Vincule seu projeto do Firebase a uma propriedade do Google Analytics 4.
Verifique se o app atende a estes requisitos de configuração específicos da plataforma:
iOS (StoreKit 1): nenhuma configuração extra é necessária. O rastreamento do StoreKit 1 funciona automaticamente.
iOS (StoreKit 2): verifique se o app está usando o SDK do Firebase para Unity v13.12.0 ou mais recente.
Conheça as APIs de compra no app consultando a documentação específica da plataforma para o Google Play Faturamento, Apple StoreKit, e Unity In-App Purchasing.
Implementação
Android
Para apps Android, é possível medir os eventos de compra no app assim que você vincular ao Google Play. Não é necessário escrever nenhum código personalizado no projeto do Unity para medir as compras.
iOS
Para apps iOS, a estratégia de implementação depende de o app usar o StoreKit 1 ou o StoreKit 2:
StoreKit 1
Se o fluxo de compra usa o StoreKit 1, o SDK do Analytics registra automaticamente os eventos de compra no app. Não é necessário adicionar nenhum código personalizado para rastrear essas compras.
StoreKit 2
Se o fluxo de compra usa o StoreKit 2, é necessário registrar manualmente as transações verificadas transmitindo a string do identificador de transação para 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"); } }); }
Recuperar o ID da transação usando o Unity IAP
Se o projeto usa o pacote padrão de compras no app do Unity
(UnityEngine.Purchasing), o método para recuperar o ID da transação depende
da versão da API Unity IAP que você está usando.
Callback de confirmação usando o Unity IAP v5.2 ou mais recente
No Unity IAP v5.2 e mais recente, é possível acessar informações de transação específicas da Apple diretamente do objeto Order no callback de confirmação. Você pode transmitir o OriginalTransactionID ou o ID da transação atual para 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 legado
Se você estiver usando o callback ProcessPurchase legado, poderá extrair o identificador de transação do produto comprado:
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; }