| 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 mit dem App Store und Google Play in Android verknüpft.
In den meisten Fällen erfasst das Analytics SDK In-App-Kaufereignisse automatisch, ohne dass API-Aufrufe in Ihrer App erforderlich sind. Die Einrichtungsvoraussetzungen 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 über StoreKit 1-APIs ausgeführt werden, werden automatisch erfasst. Es sind keine Codeänderungen erforderlich.
- iOS (StoreKit 2): App Store-Transaktionen, die über 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 Einrichtungsvoraussetzungen erfüllen:
iOS (StoreKit 1): Es ist keine zusätzliche Einrichtung erforderlich. StoreKit 1-Tracking funktioniert automatisch.
iOS (StoreKit 2): Ihre App muss das Firebase Unity SDK Version 13.12.0 oder höher verwenden.
Machen Sie sich mit den In-App-Kauf-APIs vertraut, indem Sie die plattformspezifische Dokumentation zu Google Play Billing, Apple StoreKit, und Unity In-App Purchasing lesen.
Implementierung
Android
Bei Android-Apps können Sie In-App-Kaufereignisse erfassen, sobald Sie eine Verknüpfung zu Google Play erstellt haben. Sie müssen keinen benutzerdefinierten Code in Ihrem Unity-Projekt 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 Ihr Kaufvorgang StoreKit 1 verwendet, protokolliert das Analytics SDK In-App-Kaufereignisse automatisch. Sie müssen keinen benutzerdefinierten Code hinzufügen, um diese Käufe zu erfassen.
StoreKit 2
Wenn Ihr Kaufvorgang StoreKit 2 verwendet, müssen Sie bestätigte Transaktionen manuell protokollieren, indem Sie die 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 Ihr Projekt das Standardpaket für In-App-Käufe von Unity
(UnityEngine.Purchasing) verwendet, hängt die Methode zum Abrufen der Transaktions-ID
von der verwendeten Unity IAP API-Version ab.
Bestätigungs-Callback mit Unity IAP Version 5.2 oder höher
In Unity IAP Version 5.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 }
Legacy-Callback ProcessPurchase
Wenn Sie den Legacy-Callback ProcessPurchase 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; }
In-App-Kaufereignisse manuell protokollieren
Wenn Sie In-App-Käufe erfassen müssen, die außerhalb des Google Play Store oder App Store getätigt wurden (z. B. über alternative Stores oder benutzerdefinierte Zahlungsprozesse oder andere Marktplätze), können Sie diese Transaktionen manuell mit dem Ereignis IN_APP_PURCHASE protokollieren.
using Firebase.Analytics; public void LogCustomInAppPurchase(string productName, double value, string currencyCode, int quantity = 1) { FirebaseAnalytics.LogEvent( FirebaseAnalytics.EventInAppPurchase, new Parameter(FirebaseAnalytics.ParameterProductName, productName), new Parameter(FirebaseAnalytics.ParameterValue, value), new Parameter(FirebaseAnalytics.ParameterCurrency, currencyCode), new Parameter(FirebaseAnalytics.ParameterQuantity, quantity) ); }