Đo lường lượt mua hàng trong ứng dụng

Chọn nền tảng: iOS+ Android Unity


Giao dịch mua hàng trong ứng dụng (IAP) là giao dịch mà trong đó, bạn có thể bán nội dung hoặc tính năng kỹ thuật số trong một ứng dụng di động thông qua Apple App Store hoặc Google Play. Do đó, ứng dụng của bạn không phải xử lý các giao dịch tài chính. Ví dụ về giao dịch mua hàng trong ứng dụng bao gồm nội dung dựa trên gói thuê bao hoặc các yếu tố đặc biệt trong trò chơi.

Analytics cho thấy các sự kiện IAP trong báo cáo Giao dịch mua hàng trong ứng dụng.

Đối với các ứng dụng Unity, SDK Analytics tích hợp với Apple App Store trên iOS và Google Play trên Android.

Trong hầu hết các trường hợp, Analytics SDK sẽ tự động thu thập các sự kiện IAP mà không yêu cầu các lệnh gọi API trong ứng dụng của bạn. Các yêu cầu thiết lập và hành vi theo dõi phụ thuộc vào nền tảng nhắm mục tiêu:

  • Android: Các giao dịch Google Play sẽ được theo dõi tự động sau khi bạn liên kết Google Play. Bạn không cần thay đổi mã.
  • iOS (StoreKit 1): Các giao dịch trên App Store được thực hiện bằng API StoreKit 1 sẽ được theo dõi tự động. Bạn không cần thay đổi mã.
  • iOS (StoreKit 2): Các giao dịch trên App Store được thực hiện bằng API StoreKit 2 phải được ghi nhật ký theo cách thủ công bằng API Unity tuỳ chỉnh.

Trước khi bắt đầu

Triển khai

Android

Đối với ứng dụng Android, bạn có thể đo lường các sự kiện mua hàng trong ứng dụng ngay sau khi liên kết với Google Play. Bạn không cần viết bất kỳ mã tuỳ chỉnh nào trong dự án Unity để đo lường giao dịch mua.

iOS

Đối với ứng dụng iOS, chiến lược triển khai phụ thuộc vào việc ứng dụng của bạn sử dụng StoreKit 1 hay StoreKit 2:

StoreKit 1

Nếu quy trình mua hàng của bạn sử dụng StoreKit 1, thì Analytics SDK sẽ tự động ghi lại các sự kiện mua hàng trong ứng dụng. Bạn không cần thêm mã tuỳ chỉnh nào để theo dõi những lượt mua hàng này.

StoreKit 2

Nếu quy trình mua của bạn sử dụng StoreKit 2, bạn phải ghi lại các giao dịch đã xác minh theo cách thủ công bằng cách truyền chuỗi giá trị nhận dạng giao dịch đến LogAppleTransactionAsync().

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");
        }
    });
}
Truy xuất mã giao dịch bằng Unity IAP

Nếu dự án của bạn sử dụng gói Mua hàng trong ứng dụng tiêu chuẩn của Unity (UnityEngine.Purchasing), thì phương thức truy xuất mã giao dịch sẽ phụ thuộc vào phiên bản API IAP của Unity mà bạn đang sử dụng.

Lệnh gọi lại xác nhận bằng Unity IAP phiên bản 5.2 trở lên

Trong Unity IAP phiên bản 5.2 trở lên, bạn có thể truy cập trực tiếp vào thông tin giao dịch dành riêng cho Apple từ đối tượng Order trong lệnh gọi lại xác nhận. Bạn có thể truyền OriginalTransactionID hoặc mã giao dịch hiện tại đến LogAppleTransactionAsync():

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
}
Lệnh gọi lại ProcessPurchase

Nếu đang dùng lệnh gọi lại ProcessPurchase cũ, bạn có thể trích xuất giá trị nhận dạng giao dịch từ sản phẩm đã mua:

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