| Выберите платформу: | iOS+ Android Unity |
Встроенные покупки (IAP) — это цифровой контент или функции, которые можно продавать в мобильном приложении через Apple App Store или Google Play , чтобы вашему приложению не приходилось обрабатывать финансовые транзакции. Примерами встроенных покупок являются контент по подписке или специальные игровые элементы.
Analytics отображает события внутриигровых покупок в отчете о покупках внутри приложений .
Для приложений Unity пакет Analytics SDK интегрируется с Apple App Store на iOS и Google Play на Android.
В большинстве случаев Analytics SDK автоматически собирает события IAP без необходимости вызовов API в вашем приложении. Требования к настройке и поведение отслеживания зависят от целевой платформы:
- Android : После привязки Google Play Google Play отслеживаются автоматически. Изменения в коде не требуются.
- iOS (StoreKit 1) : Транзакции в App Store, совершенные с использованием API StoreKit 1, отслеживаются автоматически. Изменений в коде не требуется.
- iOS (StoreKit 2) : Транзакции в App Store, совершаемые с использованием API StoreKit 2, необходимо регистрировать вручную с помощью пользовательского API Unity.
Прежде чем начать
Настройте свой проект Firebase и кодовую базу приложения, как описано в разделе «Начало работы с Google Analytics .
Убедитесь, что ваше приложение соответствует следующим требованиям к настройке, специфичным для данной платформы:
Android : Свяжите свои приложения Firebase с Google Play .
iOS (StoreKit 1) : Дополнительная настройка не требуется. Отслеживание StoreKit 1 работает автоматически.
iOS (StoreKit 2) : Убедитесь, что ваше приложение использует Firebase Unity SDK версии 13.12.0 или выше.
Убедитесь, что вы знакомы с API внутриигровых покупок, изучив документацию по конкретным платформам: Google Play Billing , Apple StoreKit и Unity In-App Purchasing .
Выполнение
Android
В приложениях для Android вы можете отслеживать события внутриигровых покупок сразу после привязки к Google Play . Вам не нужно писать какой-либо пользовательский код в проекте Unity для отслеживания покупок.
iOS
Для iOS-приложений стратегия реализации зависит от того, использует ли ваше приложение StoreKit 1 или StoreKit 2:
StoreKit 1
Если в вашем процессе покупки используется StoreKit 1, SDK аналитики автоматически регистрирует события IAP. Вам не нужно добавлять какой-либо пользовательский код для отслеживания этих покупок.
StoreKit 2
Если в вашем процессе покупки используется StoreKit 2, вам необходимо вручную регистрировать подтвержденные транзакции, передавая строку идентификатора транзакции в функцию 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"); } }); }
Получите идентификатор транзакции с помощью Unity IAP.
Если в вашем проекте используется стандартный пакет Unity для внутриигровых покупок ( UnityEngine.Purchasing ), то способ получения идентификатора транзакции зависит от используемой вами версии API Unity для внутриигровых покупок.
Обратный вызов подтверждения с использованием Unity IAP v5.2+
В Unity IAP версии 5.2 и выше вы можете получить доступ к информации о транзакциях, специфичной для Apple, непосредственно из объекта Order в функции обратного вызова подтверждения. Вы можете передать либо OriginalTransactionID , либо текущий идентификатор транзакции в 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 }
Обратный вызов для обработки устаревших ProcessPurchase
Если вы используете устаревший механизм обратного вызова ProcessPurchase , вы можете извлечь идентификатор транзакции из приобретенного продукта:
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; }