ব্যানার বিজ্ঞাপন সেট-আপ করা

প্ল্যাটফর্ম বেছে নিন: Android iOS Unity Flutter Android (Legacy)

ব্যানার বিজ্ঞাপন হল আয়তাকার বিজ্ঞাপন যা অ্যাপের লেআউটের একটি অংশ জুড়ে থাকে। অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানার হল নির্দিষ্ট অ্যাস্পেক্ট রেশিও সহ বিজ্ঞাপন যা ব্যবহারকারীরা অ্যাপের সাথে ইন্টার‍্যাক্ট করার সময় স্ক্রিনে থাকে, এগুলি স্ক্রিনের উপরে বা নিচে অ্যাঙ্কর করা থাকে।

এই গাইড Android অ্যাপে অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানার বিজ্ঞাপন লোড করা সম্পর্কে আলোচনা করে।

পূর্বশর্ত

  • Google Mobile Ads SDK (Legacy) সেট-আপ করুন।
  • ঐচ্ছিক: ব্যানার বিজ্ঞাপন প্রয়োগের উদাহরণ দেখতে, নিম্নলিখিত স্যাম্পেল অ্যাপগুলির মধ্যে একটি বেছে নিন:
    • অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানার বিজ্ঞাপনের Java, Kotlin, বা Jetpack Compose উদাহরণ।
    • উন্নত ফিচার ডেমো সহ Java বা Kotlin ।

সবসময় টেস্ট বিজ্ঞাপন দিয়ে পরীক্ষা করুন

আপনার অ্যাপ তৈরি ও পরীক্ষা করার সময়, লাইভ, প্রোডাকশন বিজ্ঞাপনের পরিবর্তে পরীক্ষামূলক বিজ্ঞাপন ব্যবহার করছেন কিনা তা ভালো করে দেখে নিন। এটি না করলে আপনার অ্যাকাউন্ট সাসপেন্ড করা হতে পারে।

টেস্ট বিজ্ঞাপন লোড করার সবচেয়ে সহজ উপায় হল Android ব্যানারের জন্য আমাদের নির্দিষ্ট টেস্ট বিজ্ঞাপন ইউনিট আইডি ব্যবহার করা:

/21775744923/example/adaptive-banner

প্রতিটি অনুরোধের জন্য টেস্ট বিজ্ঞাপন দেখানোর জন্য এটি বিশেষভাবে কনফিগার করা হয়েছে এবং আপনি কোডিং, টেস্টিং এবং ডিবাগিং করার সময় এটি আপনার নিজের অ্যাপে ব্যবহার করতে পারেন। শুধু নিশ্চিত করুন যে আপনি আপনার অ্যাপ প্রকাশ করার আগে এটি আপনার নিজস্ব বিজ্ঞাপন ইউনিট আইডি দিয়ে প্রতিস্থাপন করেছেন।

Google Mobile Ads SDK (Legacy) টেস্ট বিজ্ঞাপন কীভাবে কাজ করে সেই সম্পর্কে আরও জানতে, টেস্ট বিজ্ঞাপন চালু করুন বিকল্প দেখুন।

বিজ্ঞাপন ভিউ নির্ধারণ করুন

XML লেআউট

অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানার বিজ্ঞাপনের কন্টেনার হিসেবে কাজ করার জন্য আপনার লেআউট XML ফাইলে একটি ভিউ যোগ করুন:

<!-- Ad view container that fills the width of the screen and adjusts its
    height to the content of the ad. -->
<FrameLayout
        android:id="@+id/ad_view_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_alignParentBottom="true" />

Jetpack Compose

  1. JetpackCompose Utilities ফোল্ডার অন্তর্ভুক্ত করুন। এই ফোল্ডারে AdView অবজেক্ট ও অ্যাসেট কম্পোজ করার জন্য সহায়ক টুল রয়েছে।

  2. AdView কম্পোজ করুন:


// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) { AdManagerBannerAd(adView, modifier) }
}

বিজ্ঞাপনের সাইজ সেট করুন

বড় অ্যাডাপ্টিভ ব্যানার, স্ক্রল করা যায় না এমন লেআউটের জন্য ডিজাইন করা আরও বড় ফর্ম্যাট প্রদান করে। স্ট্যান্ডার্ড অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানারের তুলনায়, এই ব্যানারগুলি আরও বেশি উচ্চতার সর্বাধিক হাইট, স্ক্রিনের হাইটের ২০% পর্যন্ত এবং ৫০ থেকে ১৫০dp পর্যন্ত হতে পারে। এই বর্ধিত স্পেস ভিডিও কন্টেন্টের জন্য অপ্টিমাইজ করা হয়েছে।

নির্দিষ্ট প্রস্থ সহ অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানার টাইপে AdSize সেট করুন:

Java


// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));

Kotlin


// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360))

Jetpack Compose


// Set a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)

লেআউটে AdManagerAdView যোগ করুন

আপনার অ্যাপের লেআউটে যোগ করার জন্য বিজ্ঞাপনের সাইজ ব্যবহার করে AdManagerAdView তৈরি করুন:

Java


// Create a new ad view.
adView = new AdManagerAdView(this);
adView.setAdUnitId(AD_UNIT);
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));

// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);

Kotlin


// Create a new ad view.
val adView = AdManagerAdView(this)
adView.adUnitId = AD_UNIT_ID
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360))
this.adView = adView

// Replace ad container with new ad view.
binding.adViewContainer.removeAllViews()
binding.adViewContainer.addView(adView)

Jetpack Compose


val adView = remember { AdManagerAdView(context) }

// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = ADMANAGER_ADAPTIVE_BANNER_AD_UNIT_ID

// Set a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)

// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) { AdManagerBannerAd(adView, modifier) }
}

বিজ্ঞাপন লোড করুন

নিম্নলিখিত উদাহরণটি ৩৬০-প্রস্থের অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানার বিজ্ঞাপনকে একটি AdManagerAdView অবজেক্টে লোড করে:

Java

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);

Kotlin

val adRequest = AdManagerAdRequest.Builder().build()
adView.loadAd(adRequest)

বিজ্ঞাপন রিফ্রেশ করা

আপনি যদি রিফ্রেশ করার জন্য বিজ্ঞাপন ইউনিট কনফিগার করে থাকেন, তাহলে বিজ্ঞাপন লোড না হলে আপনাকে অন্য বিজ্ঞাপনের অনুরোধ করতে হবে না। Google Mobile Ads SDK (Legacy) Ad Manager UI-তে আপনার উল্লেখ করা যেকোনও রিফ্রেশ রেটকে সম্মান করে। আপনি রিফ্রেশ করার সুবিধা চালু না করে থাকলে, নতুন অনুরোধ করুন। বিজ্ঞাপন ইউনিট রিফ্রেশ করা সংক্রান্ত আরও বিবরণের জন্য, যেমন রিফ্রেশ রেট সেট করা, দেখুন মোবাইল অ্যাপে বিজ্ঞাপনের জন্য রিফ্রেশ রেট।

বিজ্ঞাপন রিসোর্স রিলিজ করা

ব্যানার বিজ্ঞাপন ব্যবহার করা হয়ে গেলে, আপনি ব্যানার বিজ্ঞাপনের রিসোর্স রিলিজ করতে পারবেন।

বিজ্ঞাপনের রিসোর্স রিলিজ করতে, ভিউ হায়ারার্কি থেকে বিজ্ঞাপনটি সরিয়ে দিন এবং এর সমস্ত রেফারেন্স বাদ দিন:

Java

public void destroyBanner() {
  // Remove banner from view hierarchy.
  if (adView != null) {
    View parentView = (View) adView.getParent();
    if (parentView instanceof ViewGroup) {
      ((ViewGroup) parentView).removeView(adView);
    }

    // Destroy the banner ad resources.
    adView.destroy();
  }

  // Drop reference to the banner ad.
  adView = null;
}

Kotlin

fun destroyBanner() {
  // Remove banner from view hierarchy.
  val parentView = adView?.parent
  if (parentView is ViewGroup) {
    parentView.removeView(adView)
  }

  // Destroy the banner ad resources.
  adView?.destroy()

  // Drop reference to the banner ad.
  adView = null
}

Jetpack Compose

DisposableEffect(Unit) {
  // Destroy the AdView to prevent memory leaks when the screen is disposed.
  onDispose { adView.destroy() }
}

বিজ্ঞাপন ইভেন্ট

আপনি বিজ্ঞাপনের লাইফসাইকেলে একাধিক ইভেন্ট শুনতে পারেন, এর মধ্যে রয়েছে লোডিং, বিজ্ঞাপনের ইম্প্রেশন ও ক্লিক, সেইসাথে বিজ্ঞাপন খোলা ও বন্ধ করার ইভেন্ট। ব্যানার লোড করার আগে কলব্যাক সেট করার জন্য সাজেশন দেওয়া হয়।

Java

if (adView != null) {
  adView.setAdListener(
      new AdListener() {
        @Override
        public void onAdClicked() {
          // Code to be executed when the user clicks on an ad.
        }

        @Override
        public void onAdClosed() {
          // Code to be executed when the user is about to return
          // to the app after tapping on an ad.
        }

        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError adError) {
          // Code to be executed when an ad request fails.
        }

        @Override
        public void onAdImpression() {
          // Code to be executed when an impression is recorded
          // for an ad.
        }

        @Override
        public void onAdLoaded() {
          // Code to be executed when an ad finishes loading.
        }

        @Override
        public void onAdOpened() {
          // Code to be executed when an ad opens an overlay that
          // covers the screen.
        }
      });
}

Kotlin

adView?.adListener =
  object : AdListener() {
    override fun onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    override fun onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    override fun onAdFailedToLoad(adError: LoadAdError) {
      // Code to be executed when an ad request fails.
    }

    override fun onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    override fun onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    override fun onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
  }

AdListener-এর ওভাররাইড করা যায় এমন প্রতিটি পদ্ধতি বিজ্ঞাপনের লাইফসাইকেলে একটি ইভেন্টের সাথে সম্পর্কিত।

ওভাররাইড করা যায় এমন পদ্ধতি
onAdClicked() বিজ্ঞাপনের জন্য ক্লিক রেকর্ড করা হলে onAdClicked() মেথডটি প্রয়োগ করা হয়।
onAdClosed() কোনও বিজ্ঞাপন দেখার পরে ব্যবহারকারী অ্যাপে ফিরে এলে onAdClosed() মেথডটি কল করা হয়। বিজ্ঞাপনের গন্তব্য URL-এ ব্যবহারকারীকে রিডাইরেক্ট করা হয়। সাসপেন্ড করা অ্যাক্টিভিটি আবার চালু করতে অথবা ইন্টার‍্যাকশনের জন্য নিজেকে প্রস্তুত করতে প্রয়োজনীয় অন্য কোনও কাজ পারফর্ম করতে, আপনার অ্যাপ এটি ব্যবহার করতে পারে।
onAdFailedToLoad() onAdFailedToLoad() পদ্ধতিটিই একমাত্র পদ্ধতি যাতে একটি প্যারামিটার অন্তর্ভুক্ত থাকে। LoadAdError ধরনের সমস্যার প্যারামিটার কী সমস্যা হয়েছে তা বর্ণনা করে। আরও তথ্যের জন্য, বিজ্ঞাপন লোড করা সংক্রান্ত সমস্যার সমাধান ডকুমেন্টেশন দেখুন।
onAdImpression() বিজ্ঞাপনের ইম্প্রেশন রেকর্ড করা হলে onAdImpression() মেথড ইনভোক করা হয়।
onAdLoaded() কোনও বিজ্ঞাপন লোড করা শেষ হলে onAdLoaded() মেথড এক্সিকিউট করা হয়। আপনি যদি আপনার অ্যাক্টিভিটি বা ফ্র্যাগমেন্টে AdManagerAdView যোগ করার কাজটি দেরি করে করতে চান, যতক্ষণ না আপনি নিশ্চিত হচ্ছেন যে বিজ্ঞাপন লোড হবে, যেমন, আপনি এখানে তা করতে পারেন।
onAdOpened() বিজ্ঞাপন স্ক্রিন জুড়ে থাকা ওভারলে খুললে onAdOpened() মেথডটি প্রয়োগ করা হয়।

ভিডিও বিজ্ঞাপনের জন্য হার্ডওয়্যার অ্যাক্সিলারেশন

আপনার ব্যানার বিজ্ঞাপনের ভিউতে ভিডিও বিজ্ঞাপন সঠিকভাবে দেখাতে, হার্ডওয়্যার অ্যাক্সিলারেশন অবশ্যই চালু করতে হবে।

হার্ডওয়্যার অ্যাক্সিলারেশন ডিফল্ট হিসেবে চালু করা থাকে, তবে কিছু অ্যাপ এটি বন্ধ করার সিদ্ধান্ত নিতে পারে। আপনার অ্যাপের ক্ষেত্রে এটি প্রযোজ্য হলে, আমরা সাজেস্ট করি যে বিজ্ঞাপন ব্যবহার করে এমন Activity ক্লাসের জন্য হার্ডওয়্যার অ্যাক্সিলারেশন চালু করুন।

হার্ডওয়্যার অ্যাক্সিলারেশন চালু করুন

আপনার অ্যাপ যদি গ্লোবালি হার্ডওয়্যার অ্যাক্সিলারেশন চালু করার পরে সঠিকভাবে কাজ না করে, তাহলে আপনি আলাদা আলাদা অ্যাক্টিভিটির জন্যও এটি নিয়ন্ত্রণ করতে পারবেন। হার্ডওয়্যার অ্যাক্সিলারেশন চালু বা বন্ধ করতে, আপনার AndroidManifest.xml-এ <application> ও <activity> এলিমেন্টের জন্য android:hardwareAccelerated অ্যাট্রিবিউট ব্যবহার করতে পারেন। নিচের উদাহরণটি পুরো অ্যাপের জন্য হার্ডওয়্যার অ্যাক্সিলারেশন চালু করে, কিন্তু একটি অ্যাক্টিভিটির জন্য এটি বন্ধ করে দেয়:

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

হার্ডওয়্যার অ্যাক্সিলারেশন কন্ট্রোল করার বিকল্প সম্পর্কে আরও তথ্য পেতে, হার্ডওয়্যার অ্যাক্সিলারেশন গাইড দেখুন। মনে রাখবেন যে, অ্যাক্টিভিটি বন্ধ করা থাকলে হার্ডওয়্যার অ্যাক্সিলারেশনের জন্য আলাদা আলাদা বিজ্ঞাপন ভিউ চালু করা যাবে না, তাই অ্যাক্টিভিটিতে হার্ডওয়্যার অ্যাক্সিলারেশন চালু থাকতে হবে।

ম্যানুয়ালি ইম্প্রেশন গণনা করা

ম্যানুয়াল ইম্প্রেশন গণনা শুধুমাত্র সরাসরি বিক্রি করা এবং হাউস ক্যাম্পেনের সাথে মানানসই যেখানে ক্রিয়েটিভ সরাসরি Ad Manager-এ ট্রাফিক করা হয়। এটি ব্যাকফিল বা থার্ড-পার্টি নেটওয়ার্ক বিজ্ঞাপনের জন্য ব্যবহার করা যাবে না। আরও বিবরণের জন্য, ইম্প্রেশন ও ক্লিক গণনা করা দেখুন।

ইম্প্রেশন কখন রেকর্ড করা উচিত সেই বিষয়ে আপনার বিশেষ শর্ত থাকলে, আপনি Ad Manager-এ ম্যানুয়ালি ইম্প্রেশন পিং পাঠাতে পারবেন:

Java

if (adManagerAdView != null) {
  adManagerAdView.setManualImpressionsEnabled(true);
}

Kotlin

adManagerAdView?.setManualImpressionsEnabled(true)

আপনি যদি দেখেন যে কোনও বিজ্ঞাপন সফলভাবে ফিরে এসেছে এবং স্ক্রিনে দেখা যাচ্ছে, তাহলে আপনি ম্যানুয়ালি ইম্প্রেশন রেকর্ড করতে পারেন:

Java

if (adManagerAdView != null) {
  adManagerAdView.recordManualImpression();
}

Kotlin

adManagerAdView?.recordManualImpression()

অ্যাপ ইভেন্ট

অ্যাপ ইভেন্ট আপনাকে এমন বিজ্ঞাপন তৈরি করতে দেয় যা অ্যাপ কোডে মেসেজ পাঠাতে পারে। অ্যাপ তখন এইসব মেসেজের উপর ভিত্তি করে অ্যাকশন নিতে পারে।

আপনি AppEventListener ব্যবহার করে Ad Manager-এর নির্দিষ্ট অ্যাপ ইভেন্ট শুনতে পারবেন। বিজ্ঞাপনের লাইফসাইকেলের যেকোনও সময় এইসব ইভেন্ট ঘটতে পারে, এমনকি onAdLoaded() কল করার আগেও।

আপনার AdManagerAdView-এ AppEventListener সেট করুন:

Java

if (adManagerAdView != null) {
  adManagerAdView.setAppEventListener(this);
}

Kotlin

adManagerAdView?.appEventListener = this

এখানে একটি উদাহরণ দেওয়া হল, যেখানে দেখানো হয়েছে যে কীভাবে আপনার অ্যাপের ব্যাকগ্রাউন্ড কালার পরিবর্তন করতে হয় যা কালার নামের অ্যাপ ইভেন্টের উপর নির্ভর করে:

Java

@Override
public void onAppEvent(@NonNull String name, @NonNull String info) {
  if (name.equals("color")) {
    switch (info) {
      case "green":
        // Set background color to green.
        break;
      case "blue":
        // Set background color to blue.
        break;
      default:
        // Set background color to black.
        break;
    }
  }
}

Kotlin

override fun onAppEvent(name: String, info: String) {
  if (name == "color") {
    when (info) {
      "green" -> {
        // Set background color to green.
      }
      "blue" -> {
        // Set background color to blue.
      }
      else -> {
        // Set background color to black.
      }
    }
  }
}

এবং, এখানে সংশ্লিষ্ট ক্রিয়েটিভ আছে যা লিসনারকে কালার অ্যাপ ইভেন্ট মেসেজ পাঠায়:

<html>
<head>
  <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      // Send a color=green event when ad loads.
      admob.events.dispatchAppEvent("color", "green");

      document.getElementById("ad").addEventListener("click", function() {
        // Send a color=blue event when ad is clicked.
        admob.events.dispatchAppEvent("color", "blue");
      });
    });
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad">Carpe diem!</div>
</body>
</html>

API ডেমো অ্যাপে অ্যাপ ইভেন্ট প্রয়োগ করার জন্য Ad Manager অ্যাপ ইভেন্টের উদাহরণ দেখুন।

Java Kotlin JetpackCompose

পরবর্তী ধাপ

আড়াল করা যায় এমন ব্যানার

আড়াল করা যায় এমন ব্যানার বিজ্ঞাপন হল এমন ব্যানার বিজ্ঞাপন যা প্রথমে একটি বড় ওভারলে হিসেবে দেখানো হয়, যেখানে বিজ্ঞাপনটি ছোট আকারে আড়াল করার জন্য একটি বোতাম থাকে। আপনার পারফর্ম্যান্স আরও অপ্টিমাইজ করতে এটি ব্যবহার করার কথা বিবেচনা করুন। আরও বিবরণের জন্য আড়াল করা যায় এমন ব্যানার বিজ্ঞাপন দেখুন।

ইনলাইন অ্যাডাপ্টিভ ব্যানার

অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানারের তুলনায় ইনলাইন অ্যাডাপ্টিভ ব্যানারগুলি বড় ও লম্বা হয়। ব্যানার। এগুলির উচ্চতা আলাদা আলাদা হয় এবং ডিভাইসের স্ক্রিনের সমান উঁচু হতে পারে। যেসব অ্যাপে স্ক্রল করা যায় এমন কন্টেন্টে ব্যানার বিজ্ঞাপন প্লেস করা হয়, সেগুলির জন্য অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানার বিজ্ঞাপনের পরিবর্তে ইনলাইন অ্যাডাপ্টিভ ব্যানার বিজ্ঞাপন সাজেস্ট করা হয়। আরও বিবরণের জন্য ইনলাইন অ্যাডাপ্টিভ ব্যানার দেখুন।

অন্যান্য বিষয় এক্সপ্লোর করুন