| اختيار المنصة: | iOS+ Android Unity |
عمليات الشراء داخل التطبيق هي محتوى رقمي أو ميزات يمكنك بيعها في تطبيق متوافق مع الأجهزة الجوّالة من خلال Apple App Store أو Google Play، لكي لا يحتاج تطبيقك إلى معالجة المعاملات المالية. ومن أمثلة عمليات الشراء داخل التطبيق المحتوى المستند إلى اشتراك أو الأجزاء المتميزة داخل الألعاب.
تعرِض Analytics أحداث عمليات الشراء داخل التطبيق في تقرير "عمليات الشراء داخل التطبيق".
بالنسبة إلى تطبيقات Unity، تتكامل Analytics حزمة تطوير البرامج (SDK) مع متجر Apple App Store على أجهزة iOS وGoogle Play على أجهزة Android.
في معظم الحالات، يجمع حزمة تطوير البرامج (SDK) Analytics أحداث الشراء داخل التطبيق تلقائيًا بدون الحاجة إلى طلبات البيانات من واجهة برمجة التطبيقات في تطبيقك. وتعتمد متطلبات الإعداد وسلوك التتبُّع على المنصة المستهدفة:
- Android: يتم تتبُّع معاملات Google Play تلقائيًا بعد ربط Google Play. ولا يلزم إجراء أي تغييرات على الرموز.
- نظام التشغيل iOS (الإصدار 1 من StoreKit): يتم تلقائيًا تتبُّع المعاملات التي تتم على App Store باستخدام واجهات برمجة التطبيقات للإصدار 1 من StoreKit. ولا يلزم إجراء أي تغييرات على الرموز.
- نظام التشغيل iOS (الإصدار 2 من StoreKit): يجب تسجيل معاملات App Store التي تتم باستخدام واجهات برمجة التطبيقات StoreKit 2 يدويًا باستخدام واجهة برمجة التطبيقات المخصّصة من Unity.
قبل البدء
يمكنك إعداد مشروع Firebase وقاعدة الرموز البرمجية لتطبيقك كما هو موضّح في مقالة بدء استخدام Google Analytics.
تأكَّد من أنّ تطبيقك يستوفي متطلبات الإعداد الخاصة بكل نظام أساسي:
iOS (الإصدار 1 من StoreKit): لا يلزم إجراء أي إعدادات إضافية. يعمل تتبُّع StoreKit 1 تلقائيًا.
iOS (الإصدار 2 من StoreKit): تأكَّد من أنّ تطبيقك يستخدم الإصدار 13.12.0 أو إصدارًا أحدث من حزمة تطوير البرامج (SDK) لمنصة Firebase Unity.
تأكَّد من معرفتك بواجهات برمجة التطبيقات الخاصة بعمليات الشراء داخل التطبيق من خلال مراجعة المستندات الخاصة بالنظام الأساسي لكل من نظام الفوترة في Google Play وStoreKit من Apple وUnity In-App Purchasing.
التنفيذ
Android
بالنسبة إلى تطبيقات Android، يمكنك قياس أحداث الشراء داخل التطبيق فور الربط بحساب Google Play. ليس عليك كتابة أي رمز مخصّص في مشروع Unity لقياس عمليات الشراء.
iOS
بالنسبة إلى تطبيقات iOS، تعتمد استراتيجية التنفيذ على ما إذا كان تطبيقك يستخدم الإصدار 1 أو 2 من StoreKit:
StoreKit 1
إذا كان مسار الشراء يستخدم StoreKit 1، تسجِّل حزمة تطوير البرامج (SDK) في "إحصاءات Google" أحداث الشراء داخل التطبيق تلقائيًا. لست بحاجة إلى إضافة أي رمز مخصّص لتتبُّع عمليات الشراء هذه.
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)، تعتمد طريقة استرداد معرّف المعاملة على إصدار واجهة برمجة التطبيقات لعمليات الشراء داخل التطبيق في Unity الذي تستخدمه.
دالة معاودة الاتصال الخاصة بالتأكيد باستخدام الإصدار 5.2 أو الإصدارات الأحدث من Unity IAP
في الإصدار 5.2 والإصدارات الأحدث من Unity IAP، يمكنك الوصول إلى معلومات المعاملات الخاصة بـ Apple مباشرةً من عنصر Order في دالة معاودة الاتصال الخاصة بالتأكيد. يمكنك تمرير إما 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 }
ProcessPurchase رد الاتصال باستخدام ميزة الاتصال السابقة
إذا كنت تستخدم وظيفة 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; }