অ্যাপ-মধ্যস্থ কেনাকাটা পরিমাপ করা

প্ল্যাটফর্ম বেছে নিন: 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 ব্যবহার করে ম্যানুয়ালি লগ করতে হবে।

শুরু করার আগে

প্রয়োগ

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)
    );
}