| انتخاب پلتفرم: | iOS+ اندروید یونیتی |
خریدهای درونبرنامهای (IAP) محتوای دیجیتالی یا ویژگیهایی هستند که میتوانید در یک برنامه تلفن همراه از طریق فروشگاه اپل اپ یا Google Play بفروشید تا برنامه شما نیازی به پردازش تراکنشهای مالی نداشته باشد. نمونههایی از خریدهای درونبرنامهای شامل محتوای مبتنی بر اشتراک یا قطعات بازی ویژه است.
Analytics رویدادهای IAP را در گزارش خریدهای درونبرنامهای نشان میدهد.
برای برنامههای Unity، کیت توسعه نرمافزار (SDK) Analytics با فروشگاه اپل در iOS و Google Play در اندروید ادغام میشود.
در بیشتر موارد، SDK Analytics به طور خودکار رویدادهای IAP را بدون نیاز به فراخوانی API در برنامه شما جمعآوری میکند. الزامات راهاندازی و رفتار ردیابی به پلتفرم هدف بستگی دارد:
- اندروید : تراکنشهای Google Play پس از اتصال به Google Play به طور خودکار ردیابی میشوند. نیازی به تغییر کد نیست.
- iOS (StoreKit 1) : تراکنشهای اپ استور که با استفاده از APIهای StoreKit 1 انجام میشوند، به طور خودکار ردیابی میشوند. نیازی به تغییر کد نیست.
- iOS (StoreKit 2) : تراکنشهای اپ استور که با استفاده از APIهای StoreKit 2 انجام میشوند، باید به صورت دستی و با استفاده از API سفارشی Unity ثبت شوند.
قبل از اینکه شروع کنی
پروژه Firebase و کدبیس برنامه خود را همانطور که در بخش «شروع به کار با Google Analytics توضیح داده شده است، تنظیم کنید.
پروژه Firebase خود را به یک ویژگی Google Analytics 4 پیوند دهید.
مطمئن شوید که برنامه شما این الزامات راهاندازی مخصوص پلتفرم را برآورده میکند:
اندروید : برنامههای Firebase خود را به Google Play متصل کنید .
iOS (StoreKit 1) : هیچ تنظیم اضافی لازم نیست. ردیابی StoreKit 1 به طور خودکار انجام میشود.
iOS (StoreKit 2) : مطمئن شوید که برنامه شما از Firebase Unity SDK نسخه ۱۳.۱۲.۰+ یا بالاتر استفاده میکند.
با بررسی مستندات مخصوص پلتفرمهای Google Play Billing ، Apple StoreKit و Unity In-App Purchasing ، مطمئن شوید که با APIهای خرید درونبرنامهای آشنا هستید.
پیادهسازی
اندروید
برای برنامههای اندروید، میتوانید رویدادهای IAP را به محض اتصال به Google Play اندازهگیری کنید. برای اندازهگیری خریدها نیازی به نوشتن هیچ کد سفارشی در پروژه یونیتی خود ندارید.
آیاواس
برای برنامههای iOS، استراتژی پیادهسازی بستگی به این دارد که آیا برنامه شما از StoreKit 1 یا StoreKit 2 استفاده میکند:
کیت فروشگاه ۱
اگر جریان خرید شما از StoreKit 1 استفاده میکند، Analytics SDK به طور خودکار رویدادهای IAP را ثبت میکند. برای ردیابی این خریدها نیازی به اضافه کردن هیچ کد سفارشی ندارید.
فروشگاه کیت ۲
اگر جریان خرید شما از 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
اگر پروژه شما از بسته استاندارد خرید درونبرنامهای یونیتی ( UnityEngine.Purchasing ) استفاده میکند، روش بازیابی شناسه تراکنش به نسخه API IAP یونیتی که استفاده میکنید بستگی دارد.
فراخوانی مجدد تأیید با استفاده از Unity IAP نسخه ۵.۲+
در Unity IAP نسخه ۵.۲ و بالاتر، میتوانید مستقیماً از شیء 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; }