Uygulama içi satın almaları ölçme

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 App Store 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, UİSA etkinliklerini Uygulama içi satın alma işlemleri raporunda gösterir.

Unity uygulamaları için Analytics SDK'sı iOS'te Apple App Store, Android'de ise Google Play ile entegre olur.

Çoğu durumda Analytics SDK, 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 bağlandıktan sonra Google Play işlemleri otomatik olarak izlenir. Kod değişikliği gerektirmez.
  • iOS (StoreKit 1): StoreKit 1 API'leri kullanılarak yapılan App Store 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şlemlerinin, özel Unity API'si kullanılarak manuel olarak kaydedilmesi gerekir.

Başlamadan önce

Uygulama

Android

Android uygulamaları için, Google Play ile bağlantı oluşturur oluşturmaz 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 veya StoreKit 2 kullanıp kullanmadığına bağlıdır:

StoreKit 1

Satın alma sürecinizde StoreKit 1 kullanılıyorsa Analytics SDK, uygulama içi satın alma etkinliklerini otomatik olarak kaydeder. Bu satın alma işlemlerini izlemek için herhangi bir özel kod eklemeniz gerekmez.

StoreKit 2

Satın alma sürecinizde StoreKit 2 kullanılıyorsa işlem tanımlayıcı dizesini LogAppleTransactionAsync() işlevine ileterek doğrulanmış işlemleri manuel olarak günlüğe 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'yi kullanarak işlem kimliğini alma

Projenizde Unity'nin standart uygulama içi satın alma paketini (UnityEngine.Purchasing) kullanıyorsanız işlem kimliğini alma yöntemi, kullandığınız Unity IAP API sürümüne bağlıdır.

Unity IAP v5.2+ kullanarak onay geri araması

Unity IAP v5.2 ve sonraki sürümlerde, Apple'a özgü işlem bilgilerine doğrudan onay geri çağırmasındaki Order nesnesinden erişebilirsiniz. OriginalTransactionID veya mevcut işlem kimliğini LogAppleTransactionAsync() parametresine 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 arama

Eski ProcessPurchase geri çağırmasını kullanıyorsanız satın alınan üründen işlem tanımlayıcısını çı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;
}