বিজ্ঞাপনের আয় পরিমাপ করুন

আপনার আয়ের উৎসগুলো পরিমাপ করা আপনাকে আপনার ব্যবহারকারীদের আজীবন মূল্য বুঝতে এবং আপনার অ্যাপ ব্যবসাকে এগিয়ে নিতে সাহায্য করে। এই নির্দেশিকাটি আপনাকে দেখাবে কীভাবে আপনার প্ল্যাটফর্মের জন্য বিজ্ঞাপন থেকে আয়ের পরিমাপ ব্যবস্থা স্থাপন করতে হয়।

বিজ্ঞাপন থেকে আয়ের পরিমাপ ব্যবস্থা সেট আপ করার পরে, আপনি নিম্নলিখিত কাজগুলোর যেকোনো একটি করতে পারেন:

শুরু করার আগে

যদি এখনও না করে থাকেন, তাহলে নিম্নলিখিত কাজগুলো অবশ্যই সম্পন্ন করুন:

  1. Analytics দিয়ে শুরু করুন- এ বর্ণিত পদ্ধতি অনুযায়ী আপনার প্রজেক্ট ও অ্যাপ সেট আপ করুন।

  2. আপনার Firebase প্রজেক্টটি একটি Google Analytics অ্যাকাউন্টের সাথে লিঙ্ক করা আছে কিনা, তা নিশ্চিত করুন।

  3. আপনার অ্যাপে অ্যান্ড্রয়েড এসডিকে v17.6.0+ অথবা অ্যাপল প্ল্যাটফর্মের এসডিকে v6.34.0+ অন্তর্ভুক্ত করা নিশ্চিত করুন।

বাস্তবায়ন

AdMob , AppLovin, এবং ironSource-এর মতো মনিটাইজেশন প্ল্যাটফর্মে বিজ্ঞাপন প্রদর্শন থেকে অর্জিত বিজ্ঞাপনের আয় পরিমাপ করতে আপনি Google Analytics ব্যবহার করতে পারেন। বিজ্ঞাপনের আয় পরিমাপ করার জন্য, আপনার ব্যবহারকারী যখনই আপনার অ্যাপে কোনো বিজ্ঞাপন দেখেন, তখন আপনাকে অবশ্যই ad_impression ইভেন্টগুলো লগ করতে হবে। এই ইভেন্টগুলোতে বিজ্ঞাপন প্ল্যাটফর্ম, উৎস, মুদ্রা এবং মূল্যের মতো বিবরণ থাকে।

AdMob

আপনি যদি AdMob প্ল্যাটফর্ম ব্যবহার করেন, তাহলে বিজ্ঞাপনের আয়ের স্বয়ংক্রিয় পরিমাপ চালু করতে আপনার AdMob অ্যাপটিকে Firebase এবং Analytics সাথে লিঙ্ক করুন । আপনার ব্যবহারকারীরা যখনই কোনো বিজ্ঞাপন দেখেন, Google Analytics এর জন্য Firebase SDK স্বয়ংক্রিয়ভাবে ad_impression ইভেন্টটি লগ করে।

অন্যান্য বিজ্ঞাপন নগদীকরণ প্ল্যাটফর্ম

AppLovin এবং ironSource-এর মতো প্ল্যাটফর্মগুলো ইম্প্রেশন-স্তরের রাজস্ব ডেটা সরবরাহ করে, যা আপনি Google Analytics ad_impression ইভেন্টগুলো লগ করতে ব্যবহার করতে পারেন।

নিম্নলিখিত বিভাগগুলিতে কয়েকটি ভিন্ন বিজ্ঞাপন থেকে অর্থ উপার্জনের প্ল্যাটফর্মের বাস্তবায়নের উদাহরণ দেখানো হয়েছে।

অ্যাপলভিন

সুইফট

দ্রষ্টব্য: এই Firebase পণ্যটি macOS-এ উপলব্ধ নয়।
func didPayRevenue(_ impressionData: MAAd?) {
  if let impressionData = impressionData {
    Analytics.logEvent(
      AnalyticsEventAdImpression,
      parameters: [
        AnalyticsParameterAdPlatform: "AppLovin",
        AnalyticsParameterAdUnitName: impressionData.adUnitIdentifier,
        AnalyticsParameterAdFormat: impressionData.format,
        AnalyticsParameterValue: impressionData.revenue,
        AnalyticsParameterCurrency: "USD",  // All Applovin revenue is sent in USD
        AnalyticsParameterAdSource: impressionData.networkName,
      ])
  }
}

উদ্দেশ্য-সি

দ্রষ্টব্য: এই Firebase পণ্যটি macOS-এ উপলব্ধ নয়।
- (void)didPayRevenueForAd:(MAAd *)impressionData {
    [FIRAnalytics logEventWithName:kFIREventAdImpression
                    parameters: @{
                        kFIRParameterAdPlatform: @"AppLovin",
                        kFIRParameterAdSource: impressionData.networkName,
                        kFIRParameterAdFormat: impressionData.format,
                        kFIRParameterAdUnitName: impressionData.adUnitIdentifier,
                        kFIRParameterCurrency: @"USD", // All Applovin revenue is sent in USD
                        kFIRParameterValue: impressionData.revenue
                    }];
}

Kotlin

override fun onAdRevenuePaid(impressionData: MaxAd?) {
    impressionData?.let {
        firebaseAnalytics = Firebase.analytics
        firebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION) {
            param(FirebaseAnalytics.Param.AD_PLATFORM, "appLovin")
            param(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.adUnitId)
            param(FirebaseAnalytics.Param.AD_FORMAT, impressionData.format.label)
            param(FirebaseAnalytics.Param.AD_SOURCE, impressionData.networkName)
            param(FirebaseAnalytics.Param.VALUE, impressionData.revenue)
            param(FirebaseAnalytics.Param.CURRENCY, "USD") // All Applovin revenue is sent in USD
        }
    }
}

Java

@Override
public void onAdRevenuePaid(MaxAd impressionData) {

    double revenue = impressionData.getRevenue(); // In USD

    mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
    Bundle params = new Bundle();
    params.putString(FirebaseAnalytics.Param.AD_PLATFORM, "appLovin");
    params.putString(FirebaseAnalytics.Param.AD_SOURCE, impressionData.getNetworkName());
    params.putString(FirebaseAnalytics.Param.AD_FORMAT, impressionData.getFormat().getLabel());
    params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.getAdUnitId());
    params.putDouble(FirebaseAnalytics.Param.VALUE, revenue);
    params.putString(FirebaseAnalytics.Param.CURRENCY, "USD"); // All Applovin revenue is sent in USD
    mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, params);
}

ঐক্য

// Attach callbacks based on the ad format(s) you are using
MaxSdkCallbacks.Interstitial.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent;
MaxSdkCallbacks.Rewarded.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent;
MaxSdkCallbacks.Banner.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent;
MaxSdkCallbacks.MRec.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent;
private void OnAdRevenuePaidEvent(string adUnitId, MaxSdkBase.AdInfo impressionData)
{
double revenue = impressionData.Revenue;
var impressionParameters = new[] {
  new Firebase.Analytics.Parameter("ad_platform", "AppLovin"),
  new Firebase.Analytics.Parameter("ad_source", impressionData.NetworkName),
  new Firebase.Analytics.Parameter("ad_unit_name", impressionData.AdUnitIdentifier),
  new Firebase.Analytics.Parameter("ad_format", impressionData.AdFormat),
  new Firebase.Analytics.Parameter("value", revenue),
  new Firebase.Analytics.Parameter("currency", "USD"), // All AppLovin revenue is sent in USD
};
Firebase.Analytics.FirebaseAnalytics.LogEvent("ad_impression", impressionParameters);
}

আয়রনসোর্স

সুইফট

দ্রষ্টব্য: এই Firebase পণ্যটি macOS-এ উপলব্ধ নয়।
func impressionDataDidSucceed(_ impressionData: ISImpressionData!) {
  Analytics.logEvent(
    AnalyticsEventAdImpression,
    parameters: [
      AnalyticsParameterAdPlatform: "ironSource",
      AnalyticsParameterAdSource: impressionData.ad_network ?? "No ad_network",
      AnalyticsParameterAdFormat: impressionData.ad_unit ?? "No ad_unit",
      AnalyticsParameterAdUnitName: impressionData.instance_name ?? "No instance_name",
      AnalyticsParameterCurrency: "USD",
      AnalyticsParameterValue: impressionData.revenue ?? 0,
    ])
}

উদ্দেশ্য-সি

দ্রষ্টব্য: এই Firebase পণ্যটি macOS-এ উপলব্ধ নয়।
- (void)impressionDataDidSucceed:(ISImpressionData *)impressionData {
  [FIRAnalytics logEventWithName:kFIREventAdImpression
                      parameters:@{
                        kFIRParameterAdPlatform: @"ironSource",
                        kFIRParameterAdSource: impressionData.ad_network,
                        kFIRParameterAdFormat: impressionData.ad_unit,
                        kFIRParameterAdUnitName: impressionData.instance_name,
                        kFIRParameterCurrency: @"USD",
                        kFIRParameterValue: impressionData.revenue
                      }];
}

Kotlin

override fun onImpressionSuccess(impressionData: ImpressionData) {
    // The onImpressionSuccess will be reported when the rewarded video and interstitial ad is
    // opened.
    // For banners, the impression is reported on load success. Log.d(TAG, "onImpressionSuccess" +
    // impressionData)
    firebaseAnalytics = Firebase.analytics
    firebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION) {
        param(FirebaseAnalytics.Param.AD_PLATFORM, "ironSource")
        param(FirebaseAnalytics.Param.AD_SOURCE, impressionData.adNetwork)
        param(FirebaseAnalytics.Param.AD_FORMAT, impressionData.adUnit)
        param(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.instanceName)
        param(FirebaseAnalytics.Param.CURRENCY, "USD")
        param(FirebaseAnalytics.Param.VALUE, impressionData.revenue)
    }
}

Java

@Override
public void onImpressionSuccess(ImpressionData impressionData) {
    // The onImpressionSuccess will be reported when the rewarded video and interstitial ad is opened.
    // For banners, the impression is reported on load success. Log.d(TAG, "onImpressionSuccess" + impressionData);
    mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
    if (impressionData != null) {
        Bundle bundle = new Bundle();
        bundle.putString(FirebaseAnalytics.Param.AD_PLATFORM, "ironSource");
        bundle.putString(FirebaseAnalytics.Param.AD_SOURCE, impressionData.getAdNetwork());
        bundle.putString(FirebaseAnalytics.Param.AD_FORMAT, impressionData.getAdUnit());
        bundle.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.getInstanceName());
        bundle.putString(FirebaseAnalytics.Param.CURRENCY, "USD");
        bundle.putDouble(FirebaseAnalytics.Param.VALUE, impressionData.getRevenue());
        mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, bundle);
    }
}

ঐক্য

private void ImpressionSuccessEvent(IronSourceImpressionData impressionData) {
  if (impressionData != null) {
      Firebase.Analytics.Parameter[] AdParameters = {
        new Firebase.Analytics.Parameter("ad_platform", "ironSource"),
        new Firebase.Analytics.Parameter("ad_source", impressionData.adNetwork),
        new Firebase.Analytics.Parameter("ad_unit_name", impressionData.getInstanceName),
        new Firebase.Analytics.Parameter("ad_format", impressionData.getAdUnit),
        new Firebase.Analytics.Parameter("currency","USD"),
        new Firebase.Analytics.Parameter("value", impressionData.getRevenue)
      };
      Firebase.Analytics.FirebaseAnalytics.LogEvent("ad_impression", AdParameters);
  }
}

বাস্তবায়ন বিবেচনা

Google Ads আপনার ad_impression প্রসেস করার অনুমতি দিতে, নিচে বর্ণিত currency এবং value উভয় প্যারামিটারই অন্তর্ভুক্ত করতে ভুলবেন না। ব্যবহারকারীদের অতিরিক্ত বা কম মূল্যায়ন করা থেকে বিরত থাকতে, উভয় প্যারামিটারই যথাসম্ভব নির্ভুল হওয়া উচিত।

মুদ্রা পরামিতি

currency প্যারামিটারটি ( iOS+ | Android | Unity ) তিন অক্ষরের ISO_4217 ফরম্যাটে একটি স্ট্রিং হিসেবে পাঠাতে হবে (উদাহরণস্বরূপ, "USD" )। কিছু বিজ্ঞাপন থেকে আয় করার প্ল্যাটফর্ম কারেন্সি বাদ দেয়, যার ফলে আপনাকে প্যারামিটারটি হার্ডকোড করতে হতে পারে।

মান পরামিতি

value প্যারামিটারটি ( iOS+ | Android | Unity ) দশমিক বিভাজক হিসেবে একটি ডট ব্যবহার করে পাঠাতে হবে। উপরের প্রয়োজনীয় ফরম্যাটের সাথে মেলানোর জন্য কিছু প্ল্যাটফর্ম থেকে প্রাপ্ত ভ্যালুগুলোকে আপনার রূপান্তর করার প্রয়োজন হতে পারে। কিছু প্ল্যাটফর্ম সাংখ্যিক ফরম্যাটগুলোকে স্থানীয়করণ করে এবং দশমিক বিভাজক হিসেবে কমা ব্যবহার করে। কিছু ক্ষেত্রে, কোনো প্ল্যাটফর্ম হয়তো কোনো ভ্যালুই পাঠাবে না।

এছাড়াও, মানটি ডাবল বা লং-এর মতো একটি সাংখ্যিক টাইপের হতে হবে। উদাহরণস্বরূপ, 1000.01 , 0.001 এবং 1.00 সবই বৈধ।

বৈধতা

উন্নয়ন চক্র জুড়ে আপনার বাস্তবায়ন যাচাই করার জন্য Google Analytics একাধিক বৈশিষ্ট্য প্রদান করে।

  1. ডিবাগভিউ
    আপনার ইমপ্লিমেন্টেশনটি প্রথমবার পরীক্ষা করার সময়, কনসোলে আপনার টেস্ট ad_impression ডেটা দেখতে DebugView ব্যবহার করুন। যখন আপনি একটি ad_impression ইভেন্ট নির্বাচন করবেন, তখন আপনি Parameters প্যানেলে (স্ক্রিনের ডানদিকে) আপনার পাঠানো প্যারামিটারগুলো পর্যালোচনা করতে পারবেন। এটি আপনাকে নিশ্চিত করতে সাহায্য করে যে সঠিক তথ্যই প্রসেস করা হচ্ছে।

  2. রিয়েলটাইম
    আপনার অ্যাপটি ডেপ্লয় করার পর, ইমপ্লিমেন্টেশনটি সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করতে Google Analytics রিয়েলটাইম রিপোর্ট ব্যবহার করুন। রিয়েলটাইম রিপোর্টে, ' Event count by Event name' কার্ডটি দেখুন এবং গত ৩০ মিনিটের ইভেন্ট ও প্যারামিটারের বিস্তারিত দেখতে 'ad_impression' নির্বাচন করুন।

  3. BigQuery
    BigQuery এক্সপোর্ট ব্যবহার করে এক বা একাধিক দিনের ad_impression ইভেন্টের একটি নমুনা সংগ্রহ করুন। এই সংগৃহীত নমুনাটি ব্যবহার করে শূন্য বা সেট না করা মানের মতো সমস্যাগুলো খুঁজুন এবং যেকোনো অনিয়ন্ত্রিত ব্যবহারের ক্ষেত্রে আপনার কোডে সমাধান প্রয়োগ করুন।

পরবর্তী পদক্ষেপ

Firebase কনসোলে আপনার Analytics ড্যাশবোর্ডে অথবা Analytics কনসোলে আপনার লিঙ্ক করা Analytics প্রপার্টিতে যান। বিজ্ঞাপনের আয় Average Revenue Per User (ARPU) এবং Lifetime Value (LTV)-এর মতো মেট্রিকগুলিতে অন্তর্ভুক্ত করা হয়।