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

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