ব্যানার বিজ্ঞাপন

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

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

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

পূর্বশর্ত

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

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

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

/6499/example/adaptive-banner

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

মোবাইল বিজ্ঞাপন SDK-এর পরীক্ষার বিজ্ঞাপনগুলি কীভাবে কাজ করে সে সম্পর্কে আরও তথ্যের জন্য, পরীক্ষা বিজ্ঞাপনগুলি দেখুন।

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

একটি ব্যানার প্রদর্শনের দিকে প্রথম ধাপ হল AdManagerAdView যে Activity বা Fragment আপনি এটি প্রদর্শন করতে চান তার লেআউটে স্থাপন করা।

জাভা

private AdSize getAdSize() {
  // Determine the screen width (less decorations) to use for the ad width.
  Display display = getWindowManager().getDefaultDisplay();
  DisplayMetrics outMetrics = new DisplayMetrics();
  display.getMetrics(outMetrics);

  float density = outMetrics.density;

  float adWidthPixels = adContainerView.getWidth();

  // If the ad hasn't been laid out, default to the full screen width.
  if (adWidthPixels == 0) {
    adWidthPixels = outMetrics.widthPixels;
  }

  int adWidth = (int) (adWidthPixels / density);
  return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
}

private void loadBanner() {
  
  // Create a new ad view.
  AdManagerAdView adView = new AdManagerAdView(this);
  adView.setAdSizes(getAdSize());
  adView.setAdUnitId("/6499/example/adaptive-banner");

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

  // Start loading the ad in the background.
  AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
  adView.loadAd(adRequest);
}

কোটলিন


// Determine the screen width (less decorations) to use for the ad width.
// If the ad hasn't been laid out, default to the full screen width.
private val adSize: AdSize
  get() {
    val display = windowManager.defaultDisplay
    val outMetrics = DisplayMetrics()
    display.getMetrics(outMetrics)

    val density = outMetrics.density

    var adWidthPixels = binding.adViewContainer.width.toFloat()
    if (adWidthPixels == 0f) {
      adWidthPixels = outMetrics.widthPixels.toFloat()
    }

    val adWidth = (adWidthPixels / density).toInt()
    return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
  }

private fun loadBanner() {
  
  // Create a new ad view.
  val adView = AdManagerAdView(this)
  adView.adSizes = adSize
  adView.adUnitId = "/6499/example/adaptive-banner"

  // Create an ad request.
  val adRequest = AdManagerAdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

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

একবার AdManagerAdView ঠিক হয়ে গেলে, পরবর্তী ধাপ হল একটি বিজ্ঞাপন লোড করা। এটি AdManagerAdView ক্লাসে loadAd() পদ্ধতিতে করা হয়েছে। এটি একটি AdManagerAdRequest প্যারামিটার লাগে, যা একটি একক বিজ্ঞাপন অনুরোধ সম্পর্কে রানটাইম তথ্য, যেমন টার্গেটিং তথ্য ধারণ করে।

এখানে একটি উদাহরণ রয়েছে যা দেখায় কিভাবে একটি Activity onCreate() পদ্ধতিতে একটি বিজ্ঞাপন লোড করতে হয়:

জাভা

private void loadBanner() {
  // Create a new ad view.
  adView = new AdManagerAdView(this);
  adView.setAdUnitId(AD_UNIT);
  adView.setAdSize(getAdSize());
  
  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

  // Start loading the ad in the background.
  AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
  adView.loadAd(adRequest);
}

কোটলিন

private fun loadBanner() {
  // This is an ad unit ID for a test ad. Replace with your own banner ad unit ID.
  adView.adUnitId = "/6499/example/banner"
  adView.setAdSize(adSize)
  
  // Create an ad request.
  val adRequest = AdManagerAdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

আপনার বিজ্ঞাপন লোড হতে ব্যর্থ হলে, যতক্ষণ না আপনি রিফ্রেশ করার জন্য আপনার বিজ্ঞাপন ইউনিট কনফিগার করেন ততক্ষণ আপনাকে স্পষ্টভাবে অন্যটির জন্য অনুরোধ করতে হবে না; Google মোবাইল বিজ্ঞাপন SDK Ad Managerওয়েব ইন্টারফেসে আপনার নির্দিষ্ট করা যেকোনো রিফ্রেশ হারকে সম্মান করে। আপনি যদি রিফ্রেশ সক্ষম না করে থাকেন তবে আপনাকে একটি নতুন অনুরোধ জারি করতে হবে৷

এটাই! আপনার অ্যাপ এখন ব্যানার বিজ্ঞাপন প্রদর্শনের জন্য প্রস্তুত।

বিজ্ঞাপন ঘটনা

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

জাভা

AdManagerAdView.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(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.
    }
});

কোটলিন

AdManagerAdView.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>

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

ম্যানুয়াল ছাপ গণনা

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

একটি ইমপ্রেশন কখন রেকর্ড করা উচিত তার জন্য আপনার বিশেষ শর্ত থাকলে আপনি ম্যানুয়ালি অ্যাড ম্যানেজারে ইম্প্রেশন পিংস পাঠাতে পারেন। এটি করার জন্য, একটি বিজ্ঞাপন লোড করার আগে ম্যানুয়াল ইম্প্রেশনের জন্য একটি AdManagerAdRequest সক্ষম করুন:

জাভা

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build();

কোটলিন

val adRequest = AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build()

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

জাভা

AdManagerAdView.recordManualImpression();

কোটলিন

AdManagerAdView.recordManualImpression()

অ্যাপ ইভেন্ট

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

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

জাভা

public interface AppEventListener {
  void onAppEvent(String name, String info);
}

কোটলিন

interface AppEventListener {
    fun onAppEvent(name: String, info: String)
}

void onAppEvent(String name, String info) বলা হয় যখন একটি বিজ্ঞাপনে একটি অ্যাপ ইভেন্ট ঘটে। এই ইন্টারফেস আপনার কার্যকলাপ বা অন্য কোন বস্তু দ্বারা প্রয়োগ করা যেতে পারে:

জাভা

import com.google.android.gms.ads.admanager.*;

public class BannerExample extends Activity implements AppEventListener {
}

কোটলিন

import com.google.android.gms.ads.admanager.*

class BannerExample : Activity(), AppEventListener {
}

এবং তারপর AdManagerAdView এ পাঠানো হয়েছে:

জাভা

AdManagerAdView.setAppEventListener(this);

কোটলিন

AdManagerAdView.appEventListener = this

রঙের নামের সাথে একটি অ্যাপ ইভেন্টের উপর নির্ভর করে কীভাবে আপনার অ্যাপের পটভূমির রঙ পরিবর্তন করতে হয় তা এখানে একটি উদাহরণ রয়েছে:

জাভা

@Override
public void onAppEvent(String name, String info) {
  if ("color".equals(name)) {
    if ("green".equals(info)) {
      // Set background color to green.
    } else if ("blue".equals(info)) {
      // Set background color to blue.
    } else {
      // Set background color to black.
    }
  }
}

কোটলিন

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>

এপিআই ডেমো অ্যাপে অ্যাপ ইভেন্ট বাস্তবায়নের জন্য অ্যাড ম্যানেজার অ্যাপ ইভেন্টের উদাহরণ দেখুন।

জাভা কোটলিন

অতিরিক্ত সম্পদ

গিটহাবের উদাহরণ

  • অ্যাঙ্কর করা অভিযোজিত ব্যানার বিজ্ঞাপনের উদাহরণ: Java | কোটলিন

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

সংকোচনযোগ্য ব্যানার

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

ইনলাইন অভিযোজিত ব্যানার

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

অন্যান্য বিষয় অন্বেষণ