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