| Wybierz platformę: | iOS + Android + Unity |
Zakupy w aplikacji to treści lub funkcje cyfrowe, które można sprzedawać w aplikacji mobilnej przez Apple App Store lub Google Play Aplikacja nie musi więc w ich przypadku przetwarzać transakcji finansowych. Przykładami zakupów w aplikacji są treści dostępne w ramach subskrypcji lub specjalne dodatki do gier.
Analytics wyświetla zdarzenia związane z zakupami w aplikacji w raporcie Zakupy w aplikacji.
W przypadku aplikacji Unity pakiet SDK Analytics integruje się z Apple App Store na iOS i Google Play na Androidzie.
W większości przypadków pakiet SDK Analytics automatycznie zbiera zdarzenia związane z zakupami w aplikacji bez konieczności wywoływania interfejsu API w aplikacji. Wymagania dotyczące konfiguracji i zachowanie śledzenia zależą od platformy docelowej:
- Android: Google Play transakcje są śledzone automatycznie po połączeniu z Google Play. Nie wymaga to żadnych zmian w kodzie.
- iOS (StoreKit 1): transakcje w App Store dokonywane za pomocą interfejsów API StoreKit 1 są śledzone automatycznie. Nie wymaga to żadnych zmian w kodzie.
- iOS (StoreKit 2): transakcje w App Store dokonywane za pomocą interfejsów API StoreKit 2 muszą być rejestrowane ręcznie za pomocą niestandardowego interfejsu API Unity.
Zanim zaczniesz
Skonfiguruj projekt w Firebase i bazę kodu aplikacji zgodnie z opisem w artykule Pierwsze kroki z Google Analytics.
Upewnij się, że Twoja aplikacja spełnia te wymagania dotyczące konfiguracji na poszczególnych platformach:
Android: Połącz aplikacje Firebase z Google Play.
iOS (StoreKit 1): nie jest wymagana żadna dodatkowa konfiguracja. Śledzenie StoreKit 1 działa automatycznie.
iOS (StoreKit 2): upewnij się, że Twoja aplikacja używa pakietu Firebase Unity SDK w wersji 13.12.0 lub nowszej.
Zapoznaj się z interfejsami API zakupów w aplikacji, przeglądając dokumentację dotyczącą Płatności w Google Play, Apple StoreKit, i Unity In-App Purchasing.
Implementacja
Android
W przypadku aplikacji na Androida możesz mierzyć zdarzenia związane z zakupami w aplikacji od razu po połączeniu z Google Play. Aby mierzyć zakupy, nie musisz pisać żadnego niestandardowego kodu w projekcie Unity.
iOS
W przypadku aplikacji na iOS strategia implementacji zależy od tego, czy aplikacja używa StoreKit 1 czy StoreKit 2:
StoreKit 1
Jeśli proces zakupu korzysta z StoreKit 1, pakiet SDK Analytics automatycznie rejestruje zdarzenia związane z zakupami w aplikacji. Aby śledzić te zakupy, nie musisz dodawać żadnego niestandardowego kodu.
StoreKit 2
Jeśli proces zakupu korzysta z StoreKit 2, musisz ręcznie rejestrować zweryfikowane transakcje, przekazując ciąg identyfikatora transakcji do 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"); } }); }
Pobieranie identyfikatora transakcji za pomocą Unity IAP
Jeśli Twój projekt używa standardowego pakietu zakupów w aplikacji Unity
(UnityEngine.Purchasing), metoda pobierania identyfikatora transakcji zależy
od używanej wersji interfejsu API Unity IAP.
Wywołanie zwrotne potwierdzenia za pomocą Unity IAP w wersji 5.2 lub nowszej
W Unity IAP w wersji 5.2 i nowszej możesz uzyskać dostęp do informacji o transakcji specyficznych dla Apple bezpośrednio z obiektu Order w wywołaniu zwrotnym potwierdzenia. Do LogAppleTransactionAsync() możesz przekazać OriginalTransactionID lub bieżący identyfikator transakcji:
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 }
Starsze wywołanie zwrotne ProcessPurchase
Jeśli używasz starszego wywołania zwrotnego ProcessPurchase, możesz wyodrębnić identyfikator transakcji z zakupionego produktu:
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; }