| בחירת פלטפורמה: | iOS+ Android Unity |
רכישות באפליקציה (IAP) הן תוכן או תכונות דיגיטליים שאפשר למכור באפליקציה לנייד דרך Apple App Store או Google Play, כך שהאפליקציה לא צריכה לעבד עסקאות פיננסיות. דוגמאות לרכישות באפליקציה: תוכן שמבוסס על מינוי או פריטים מיוחדים במשחק.
בAnalytics מוצגים אירועי IAP בדוח "רכישות באפליקציה".
באפליקציות Unity, ערכת ה-SDK של Analytics משתלבת עם Apple App Store ב-iOS ועם Google Play ב-Android.
ברוב המקרים, ה-SDK של Analytics אוסף באופן אוטומטי אירועי IAP בלי צורך בקריאות ל-API באפליקציה. דרישות ההגדרה והתנהגות המעקב תלויות בפלטפורמת היעד:
- Android: העסקאות ב-Google Play נמדדות באופן אוטומטי אחרי שמקשרים את Google Play. אין צורך לשנות את הקוד.
- iOS (StoreKit 1): עסקאות ב-App Store שבוצעו באמצעות ממשקי StoreKit 1 API מתועדות באופן אוטומטי. אין צורך לשנות את הקוד.
- iOS (StoreKit 2): עסקאות ב-App Store שבוצעו באמצעות ממשקי ה-API של StoreKit 2 חייבות להיות מתועדות באופן ידני באמצעות ה-API המותאם אישית של Unity.
לפני שמתחילים
מגדירים את פרויקט Firebase ואת בסיס הקוד של האפליקציה, כמו שמתואר במאמר תחילת העבודה עם Google Analytics.
חשוב לוודא שהאפליקציה עומדת בדרישות ההגדרה הספציפיות לפלטפורמה:
iOS (StoreKit 1): לא נדרשת הגדרה נוספת. המעקב ב-StoreKit 1 פועל באופן אוטומטי.
iOS (StoreKit 2): ודאו שהאפליקציה משתמשת ב-Firebase Unity SDK בגרסה 13.12.0 ואילך.
חשוב להכיר את ממשקי ה-API לרכישות באפליקציות. לשם כך, כדאי לעיין במסמכי התיעוד הספציפיים לפלטפורמה של החיוב ב-Google Play, של StoreKit של אפל ושל רכישות באפליקציות של Unity.
הטמעה
Android
באפליקציות ל-Android, אפשר למדוד אירועי IAP ברגע שמקשרים אל Google Play. כדי למדוד רכישות, לא צריך לכתוב קוד בהתאמה אישית בפרויקט ב-Unity.
iOS
באפליקציות ל-iOS, אסטרטגיית ההטמעה תלויה בגרסה של StoreKit שבה אתם משתמשים באפליקציה: StoreKit 1 או StoreKit 2.
StoreKit 1
אם תהליך הרכישה שלכם משתמש ב-StoreKit 1, ערכת Analytics SDK מתעדת באופן אוטומטי אירועי רכישה מתוך האפליקציה. לא צריך להוסיף קוד מותאם אישית כדי לעקוב אחרי הרכישות האלה.
StoreKit 2
אם תהליך הרכישה שלכם משתמש ב-StoreKit 2, אתם צריכים לתעד באופן ידני עסקאות מאומתות על ידי העברת מחרוזת מזהה העסקה אל 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"); } }); }
אחזור של מזהה העסקה באמצעות Unity IAP
אם בפרויקט שלכם אתם משתמשים בחבילת הרכישות הרגילות באפליקציה של Unity (UnityEngine.Purchasing), השיטה לאחזור מזהה העסקה תלויה בגרסת ה-API של Unity IAP שבה אתם משתמשים.
קריאה חוזרת (callback) לאישור באמצעות Unity IAP בגרסה 5.2 ואילך
ב-Unity IAP מגרסה 5.2 ואילך, אפשר לגשת לפרטי העסקאות הספציפיים ל-Apple ישירות מהאובייקט Order בקריאה החוזרת (callback) לאישור. אפשר להעביר את OriginalTransactionID או את מזהה העסקה הנוכחי אל 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 }
קריאה חוזרת (callback) של ProcessPurchase מדור קודם
אם אתם משתמשים בקריאה החוזרת (callback) הקודמת של ProcessPurchase, אתם יכולים לחלץ את מזהה העסקה מהמוצר שנרכש:
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; }
תיעוד ידני של אירועי רכישה באפליקציה
אם אתם צריכים לעקוב אחרי רכישות באפליקציה שבוצעו מחוץ לחנות Play או ל-App Store (למשל דרך חנויות חלופיות, תהליכי עיבוד תשלומים בהתאמה אישית או זירות מסחר אחרות), אתם יכולים לתעד את העסקאות האלה באופן ידני באמצעות האירוע IN_APP_PURCHASE.
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) ); }