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

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

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

তুমি শুরু করার আগে

আপনি যদি ইতিমধ্যে না করে থাকেন তবে নিম্নলিখিত কাজগুলি সম্পূর্ণ করতে ভুলবেন না:

  1. Get Started with Analytics- এ বর্ণিত আপনার প্রোজেক্ট এবং অ্যাপ সেট আপ করুন।

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

  3. নিশ্চিত করুন যে আপনি আপনার অ্যাপে Android SDK v17.6.0+ অথবা Apple প্ল্যাটফর্ম SDK v6.34.0+ অন্তর্ভুক্ত করেছেন।

বাস্তবায়ন

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

AdMob

আপনি যদি AdMob প্ল্যাটফর্ম ব্যবহার করেন, তাহলে বিজ্ঞাপনের আয়ের স্বয়ংক্রিয় পরিমাপ সক্ষম করতে Firebase এবং Analytics-এর সাথে আপনার AdMob অ্যাপ লিঙ্ক করুন । 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+KTX

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+KTX

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 বিজ্ঞাপনগুলিকে আপনার 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 ইভেন্ট নির্বাচন করেন, আপনি প্যারামিটার প্যানেলে (স্ক্রীনের ডানদিকে) যে প্যারামিটারগুলি পাঠাচ্ছেন সেগুলি পর্যালোচনা করতে পারেন৷ এটি আপনাকে নিশ্চিত করতে সাহায্য করে যে সঠিক তথ্য প্রক্রিয়া করা হচ্ছে।

  2. প্রকৃত সময়
    একবার আপনি আপনার অ্যাপ স্থাপন করলে, বাস্তবায়ন সঠিকভাবে কাজ করছে তা নিশ্চিত করতে Google Analytics রিয়েলটাইম রিপোর্ট ব্যবহার করুন। রিয়েলটাইম রিপোর্টে, ইভেন্টের নাম কার্ড দ্বারা ইভেন্ট গণনা দেখুন এবং শেষ 30 মিনিটের ইভেন্ট এবং প্যারামিটারের বিবরণ দেখতে ad_impression নির্বাচন করুন।

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

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

Firebase কনসোলে আপনার Analytics ড্যাশবোর্ডে যান বা Analytics কনসোলে আপনার লিঙ্ক করা Analytics প্রপার্টিতে যান। বিজ্ঞাপনের আয় মেট্রিক্সে ফ্যাক্টর করা হয়, যেমন প্রতি ব্যবহারকারী গড় আয় (ARPU) এবং লাইফটাইম ভ্যালু (LTV)।