In-App-Käufe analysieren

Plattform auswählen: iOS+ Android Unity


Über In-App-Käufe können Sie digitale Inhalte oder Artikel in Apps über den App Store oder Google Play verkaufen. Es sind dann keine finanziellen Transaktionen in der App erforderlich. Dabei kann es sich z. B. um abobasierte Inhalte oder spezielle Spielfiguren handeln.

Analytics zeigt IAP-Ereignisse im Bericht „In-App-Käufe“.

Bei Unity-Apps wird das Analytics SDK in iOS in den Apple App Store und in Android in Google Play eingebunden.

In den meisten Fällen werden IAP-Ereignisse automatisch vom Analytics SDK erfasst, ohne dass API-Aufrufe in Ihrer App erforderlich sind. Die Einrichtungsanforderungen und das Tracking-Verhalten hängen von der Zielplattform ab:

  • Android: Google Play-Transaktionen werden automatisch erfasst, nachdem Sie Google Play verknüpft haben. Es sind keine Codeänderungen erforderlich.
  • iOS (StoreKit 1): App Store-Transaktionen, die mit StoreKit 1-APIs ausgeführt werden, werden automatisch erfasst. Es sind keine Codeänderungen erforderlich.
  • iOS (StoreKit 2): App Store-Transaktionen, die mit StoreKit 2-APIs ausgeführt werden, müssen manuell mit der benutzerdefinierten Unity-API protokolliert werden.

Hinweis

Implementierung

Android

Bei Android-Apps können Sie IAP-Ereignisse messen, sobald Sie eine Verknüpfung zu Google Play herstellen. Sie müssen in Ihrem Unity-Projekt keinen benutzerdefinierten Code schreiben, um Käufe zu erfassen.

iOS

Bei iOS-Apps hängt die Implementierungsstrategie davon ab, ob Ihre App StoreKit 1 oder StoreKit 2 verwendet:

StoreKit 1

Wenn in Ihrem Kaufvorgang StoreKit 1 verwendet wird, werden IAP-Ereignisse automatisch vom Analytics SDK protokolliert. Sie müssen keinen benutzerdefinierten Code hinzufügen, um diese Käufe zu erfassen.

StoreKit 2

Wenn in Ihrem Kaufvorgang StoreKit 2 verwendet wird, müssen Sie bestätigte Transaktionen manuell protokollieren, indem Sie den Transaktions-ID-String an LogAppleTransactionAsync() übergeben.

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");
        }
    });
}
Transaktions-ID mit Unity IAP abrufen

Wenn in Ihrem Projekt das Standardpaket für In-App-Käufe von Unity (UnityEngine.Purchasing) verwendet wird, hängt die Methode zum Abrufen der Transaktions-ID von der verwendeten Unity IAP API-Version ab.

Bestätigungs-Callback mit Unity IAP v5.2+

In Unity IAP v5.2 und höher können Sie direkt über das Order-Objekt im Bestätigungs-Callback auf Apple-spezifische Transaktionsinformationen zugreifen. Sie können entweder die OriginalTransactionID oder die aktuelle Transaktions-ID an LogAppleTransactionAsync() übergeben:

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
}
Alter ProcessPurchase-Callback

Wenn Sie den alten ProcessPurchase-Callback verwenden, können Sie die Transaktions-ID aus dem gekauften Produkt extrahieren:

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