Mierz zakupy w aplikacji

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

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;
}