| 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
Thiết lập dự án Firebase và cơ sở mã của ứng dụng như mô tả trong phần Bắt đầu sử dụng Google Analytics.
Đảm bảo ứng dụng của bạn đáp ứng các yêu cầu thiết lập dành riêng cho nền tảng sau:
iOS (StoreKit 1): Không cần thiết lập thêm. Tính năng theo dõi StoreKit 1 hoạt động tự động.
iOS (StoreKit 2): Đảm bảo ứng dụng của bạn đang sử dụng SDK của Firebase cho Unity phiên bản 13.12.0 trở lên.
Hãy đảm bảo bạn nắm rõ các API mua hàng trong ứng dụng bằng cách xem tài liệu dành riêng cho từng nền tảng của Google Play Billing, StoreKit của Apple và Unity In-App Purchasing (Mua hàng trong ứng dụng của Unity).
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 cũ
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; }