| Seleccionar plataforma: | iOS+ Android Unity |
Las compras directas desde la aplicación (CDA) son contenido digital o funciones que puedes vender en una app para dispositivos móviles a través de la App Store de Apple o Google Play, de modo que tu aplicación no tenga que procesar transacciones financieras. Algunos ejemplos de compras directas desde la aplicación incluyen contenido basado en suscripciones o artículos especiales de videojuegos.
Analytics muestra los eventos de IAP en el informe de compras directas desde la app.
En el caso de las apps de Unity, el SDK de Analytics se integra en la App Store de Apple en iOS y en Google Play en Android.
En la mayoría de los casos, el SDK de Analytics recopila eventos de IAP automáticamente sin requerir llamadas a la API en tu app. Los requisitos de configuración y el comportamiento del seguimiento dependen de la plataforma de destino:
- Android: Las transacciones de Google Play se rastrean automáticamente después de vincular Google Play. No requiere cambios en los códigos.
- iOS (StoreKit 1): Las transacciones de App Store realizadas con las APIs de StoreKit 1 se rastrean automáticamente. No requiere cambios en los códigos.
- iOS (StoreKit 2): Las transacciones de App Store realizadas con las APIs de StoreKit 2 se deben registrar manualmente con la API personalizada de Unity.
Antes de comenzar
Configura tu proyecto de Firebase y la base de código de tu app como se describe en Comienza a usar Google Analytics.
Vincula tu proyecto de Firebase a una propiedad Google Analytics 4.
Asegúrate de que tu app cumpla con estos requisitos de configuración específicos de la plataforma:
iOS (StoreKit 1): No se requiere ninguna configuración adicional. El seguimiento de StoreKit 1 funciona automáticamente.
iOS (StoreKit 2): Asegúrate de que tu app use el SDK de Firebase Unity v13.12.0 o una versión posterior.
Consulta la documentación específica de la plataforma para Facturación Google Play, StoreKit de Apple y Unity In-App Purchasing para asegurarte de conocer las APIs de compra directa desde la app.
Implementación
Android
En el caso de las apps para Android, puedes medir los eventos de IAP en cuanto te vincules a Google Play. No es necesario que escribas código personalizado en tu proyecto de Unity para medir las compras.
iOS
En el caso de las apps para iOS, la estrategia de implementación depende de si tu app usa StoreKit 1 o StoreKit 2:
StoreKit 1
Si tu flujo de compra usa StoreKit 1, el SDK de Analytics registra automáticamente los eventos de IAP. No es necesario que agregues ningún código personalizado para hacer un seguimiento de estas compras.
StoreKit 2
Si tu flujo de compra usa StoreKit 2, debes registrar manualmente las transacciones verificadas pasando la cadena del identificador de transacción 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"); } }); }
Cómo recuperar el ID de transacción con IAP de Unity
Si tu proyecto usa el paquete estándar de compras integradas en la aplicación de Unity (UnityEngine.Purchasing), el método para recuperar el ID de transacción depende de la versión de la API de Unity IAP que uses.
Devolución de llamada de confirmación con la IAP de Unity v5.2 y versiones posteriores
En la versión 5.2 y posteriores de IAP de Unity, puedes acceder a la información de transacciones específica de Apple directamente desde el objeto Order en la devolución de llamada de confirmación. Puedes pasar el OriginalTransactionID o el ID de transacción actual 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 }
Devolución de llamada ProcessPurchase heredada
Si usas la devolución de llamada ProcessPurchase heredada, puedes extraer el identificador de transacción del producto 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; }