| 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
Richten Sie Ihr Firebase-Projekt und die Codebasis Ihrer App wie unter Erste Schritte mit Google Analytics beschrieben ein.
Verknüpfen Sie Ihr Firebase-Projekt mit einer Google Analytics 4-Property.
Ihre App muss die folgenden plattformspezifischen Einrichtungsanforderungen erfüllen:
iOS (StoreKit 1): Es ist keine zusätzliche Einrichtung erforderlich. Das Tracking mit StoreKit 1 funktioniert automatisch.
iOS (StoreKit 2): Achten Sie darauf, dass in Ihrer App das Firebase Unity SDK v13.12.0 oder höher verwendet wird.
Machen Sie sich mit den In-App-Kauf-APIs vertraut, indem Sie die plattformspezifische Dokumentation für Google Play Billing, Apple StoreKit und Unity In-App Purchasing lesen.
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; }