| প্ল্যাটফর্ম বেছে নিন: | iOS+ Android Unity |
অ্যাপ-মধ্যস্থ কেনাকাটা (IAP) হল ডিজিটাল কন্টেন্ট বা ফিচার যা আপনি Apple App Store বা Google Play-এর মাধ্যমে মোবাইল অ্যাপে বিক্রি করতে পারেন, যাতে আপনার অ্যাপকে আর্থিক ট্রানজ্যাকশন প্রসেস করতে না হয়। অ্যাপ-মধ্যস্থ কেনাকাটার উদাহরণের মধ্যে সাবস্ক্রিপশন-ভিত্তিক কন্টেন্ট বা গেমের বিশেষ আইটেম অন্তর্ভুক্ত।
Analytics, অ্যাপ-মধ্যস্থ কেনাকাটার রিপোর্ট-এ IAP ইভেন্ট দেখায়।
Unity অ্যাপের জন্য, Analytics SDK iOS-এ Apple App Store-এর সাথে এবং Android-এ Google Play-এর সাথে ইন্টিগ্রেট করে।
বেশিরভাগ ক্ষেত্রে, Analytics SDK আপনার অ্যাপে API কল করার প্রয়োজন ছাড়াই অটোমেটিক IAP ইভেন্ট সংগ্রহ করে। সেট-আপের প্রয়োজনীয়তা এবং ট্র্যাকিংয়ের আচরণ টার্গেট প্ল্যাটফর্মের উপর নির্ভর করে:
- Android: Google Play লিঙ্ক করার পরে ট্রানজ্যাকশন অটোমেটিক ট্র্যাক করা হয় Google Play। কোড পরিবর্তন করার প্রয়োজন পড়ে না।
- iOS (StoreKit 1): StoreKit 1 API ব্যবহার করে করা App Store ট্রানজ্যাকশন অটোমেটিক ট্র্যাক করা হয়। কোড পরিবর্তন করার প্রয়োজন পড়ে না।
- iOS (StoreKit 2): StoreKit 2 API ব্যবহার করে করা App Store ট্রানজ্যাকশন কাস্টম Unity API ব্যবহার করে ম্যানুয়ালি লগ করতে হবে।
শুরু করার আগে
Google Analytics-এর সাথে শুরু করুন-এ যেভাবে বর্ণনা করা হয়েছে সেইভাবে আপনার Firebase প্রোজেক্ট ও অ্যাপের কোডবেস সেট-আপ করুন।
আপনার Firebase প্রোজেক্ট Google Analytics 4 প্রপার্টির সাথে লিঙ্ক করুন।
আপনার অ্যাপ এইসব প্ল্যাটফর্ম-নির্দিষ্ট সেট-আপের প্রয়োজনীয়তা পূরণ করছে কিনা তা ভালো করে দেখে নিন:
Android: আপনার Firebase অ্যাপ Google Play-এর সাথে লিঙ্ক করুন।
iOS (StoreKit 1): অতিরিক্ত কোনও সেট-আপের প্রয়োজন নেই। StoreKit 1 ট্র্যাকিং অটোমেটিক কাজ করে।
iOS (StoreKit 2): আপনার অ্যাপ Firebase Unity SDK v13.12.0+ বা তার পরবর্তী ভার্সন ব্যবহার করছে কিনা তা নিশ্চিত করুন।
Google Play Billing, Apple StoreKit এবং Unity In-App Purchasing-এর জন্য প্ল্যাটফর্ম-নির্দিষ্ট ডকুমেন্টেশন পর্যালোচনা করে আপনি অ্যাপ-মধ্যস্থ কেনাকাটার API সম্পর্কে জানেন কিনা তা নিশ্চিত করুন।
প্রয়োগ
Android
Android অ্যাপের জন্য, আপনি Google Play-এর সাথে লিঙ্ক করার সাথে সাথেই IAP ইভেন্ট পরিমাপ করতে পারবেন। কেনাকাটা পরিমাপ করার জন্য আপনার Unity প্রোজেক্টে কোনও কাস্টম কোড লেখার প্রয়োজন নেই।
iOS
iOS অ্যাপের ক্ষেত্রে, প্রয়োগ করার স্ট্র্যাটেজি নির্ভর করে আপনার অ্যাপ StoreKit 1 নাকি StoreKit 2 ব্যবহার করে তার উপর:
StoreKit ১
আপনার পারচেজ ফ্লো StoreKit 1 ব্যবহার করলে, Analytics SDK অটোমেটিক IAP ইভেন্ট লগ করে। এইসব কেনাকাটা ট্র্যাক করার জন্য আপনাকে কোনও কাস্টম কোড যোগ করতে হবে না।
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 IAP API ভার্সনের উপর নির্ভর করে।
Unity IAP v5.2+ ব্যবহার করে কনফার্মেশন কলব্যাক
Unity IAP v5.2 এবং তার পরবর্তী ভার্সনে, আপনি কনফার্মেশন কলব্যাকে Order অবজেক্ট থেকে সরাসরি Apple-নির্দিষ্ট ট্রানজ্যাকশন
তথ্য অ্যাক্সেস করতে পারবেন। আপনি
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; }
অ্যাপ-মধ্যস্থ কেনাকাটার ইভেন্ট ম্যানুয়ালি লগ করুন
Play Store বা 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) ); }