| Platform seçin: | iOS+ Android Unity |
Uygulama içi satın almalar (UİSA), uygulamanızın finansal işlemler yapmak zorunda kalmaması için bir mobil uygulamada Apple Uygulama Mağazası veya Google Play üzerinden satabileceğiniz dijital içerik veya özelliklerdir. Uygulama içi satın alma işlemlerine örnek olarak aboneliğe dayalı içerik veya özel oyun parçaları verilebilir.
Analytics, uygulama içi satın alma etkinliklerini Uygulama içi satın alma işlemleri raporunda gösterir.
Unity uygulamalarında Analytics SDK'sı, iOS'te Apple App Store ile, Android'de ise Google Play ile entegre olur.
Çoğu durumda Analytics SDK'sı, uygulamanızda API çağrıları gerektirmeden uygulama içi satın alma etkinliklerini otomatik olarak toplar. Kurulum şartları ve izleme davranışı, hedef platforma bağlıdır:
- Android: Google Play, Google Play bağlandıktan sonra işlemler otomatik olarak izlenir. Kod değişikliği gerektirmez.
- iOS (StoreKit 1): StoreKit 1 API'leri kullanılarak yapılan uygulama mağazası işlemleri otomatik olarak izlenir. Kod değişikliği gerektirmez.
- iOS (StoreKit 2): StoreKit 2 API'leri kullanılarak yapılan App Store işlemleri, özel Unity API'si kullanılarak manuel olarak kaydedilmelidir.
Başlamadan önce
Firebase projenizi ve uygulamanızın kod tabanını Google Analytics kullanmaya başlama bölümünde açıklandığı şekilde ayarlayın.
Uygulamanızın platforma özgü aşağıdaki kurulum koşullarını karşıladığından emin olun:
iOS (StoreKit 1): Ek kurulum gerekmez. StoreKit 1 izleme özelliği otomatik olarak çalışır.
iOS (StoreKit 2): Uygulamanızın Firebase Unity SDK'sı 13.12.0 veya sonraki bir sürümü kullandığından emin olun.
Google Play Faturalandırma, Apple StoreKit ve Unity Uygulama İçi Satın Alma ile ilgili platforma özel dokümanları inceleyerek uygulama içi satın alma API'leri hakkında bilgi edinin.
Uygulama
Android
Android uygulamalarında, Google Play ile bağlantı oluşturduğunuz anda uygulama içi satın alma etkinliklerini ölçebilirsiniz. Satın alma işlemlerini ölçmek için Unity projenizde özel kod yazmanız gerekmez.
iOS
iOS uygulamalarında uygulama stratejisi, uygulamanızın StoreKit 1 mi yoksa StoreKit 2 mi kullandığına bağlıdır:
StoreKit 1
Satın alma sürecinizde StoreKit 1 kullanılıyorsa Analytics SDK'sı, uygulama içi satın alma etkinliklerini otomatik olarak günlüğe kaydeder. Bu satın alma işlemlerini izlemek için özel kod eklemeniz gerekmez.
StoreKit 2
Satın alma sürecinizde StoreKit 2 kullanılıyorsa işlem tanımlayıcı dizesini LogAppleTransactionAsync() yöntemine ileterek doğrulanmış işlemleri manuel olarak kaydetmeniz gerekir.
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"); } }); }
Unity IAP kullanarak işlem kimliğini alma
Projenizde Unity'nin standart Uygulama İçi Satın Alma paketi (UnityEngine.Purchasing) kullanılıyorsa işlem kimliğini alma yöntemi, kullandığınız Unity IAP API sürümüne bağlıdır.
Unity IAP 5.2 ve sonraki sürümlerini kullanarak onay geri çağırma
Unity IAP 5.2 ve sonraki sürümlerde, onay geri çağırma işlevindeki Order nesnesinden Apple'a özel işlem bilgilerine doğrudan erişebilirsiniz. LogAppleTransactionAsync()'e OriginalTransactionID veya mevcut işlem kimliğini iletebilirsiniz:
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 }
Eski ProcessPurchase geri çağırma
Eski ProcessPurchase geri çağırma işlevini kullanıyorsanız işlem tanımlayıcıyı satın alınan üründen çıkarabilirsiniz:
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; }
Uygulama içi satın alma etkinliklerini manuel olarak kaydetme
Google Play Store veya App Store dışında (ör. alternatif uygulama mağazaları, özel ödeme süreçleri veya diğer pazar yerleri aracılığıyla) yapılan uygulama içi satın alma işlemlerini izlemeniz gerekiyorsa IN_APP_PURCHASE etkinliğini kullanarak bu işlemleri manuel olarak kaydedebilirsiniz.
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) ); }