এই গাইডে Android অ্যাপে অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানার বিজ্ঞাপন লোড করার ব্যাপারে আলোচনা করা হয়েছে।
পূর্বশর্ত
- Google Mobile Ads SDK (Legacy) সেট-আপ করুন।
- ঐচ্ছিক: ব্যানার বিজ্ঞাপন প্রয়োগের উদাহরণ দেখতে, নিম্নলিখিত স্যাম্পেল অ্যাপগুলির মধ্যে থেকে
একটি বেছে নিন:
- Java, Kotlin অথবা Jetpack Compose -এর অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানার বিজ্ঞাপনের উদাহরণ।
- Java বা Kotlin উন্নত ফিচারের ডেমো।
সবসময় টেস্ট বিজ্ঞাপন দিয়ে পরীক্ষা করুন
আপনার অ্যাপ তৈরি ও পরীক্ষা করার সময়, লাইভ, প্রোডাকশন বিজ্ঞাপনের পরিবর্তে পরীক্ষামূলক বিজ্ঞাপন ব্যবহার করছেন কিনা তা নিশ্চিত করুন। এটি না করলে আপনার অ্যাকাউন্ট সাসপেন্ড করা হতে পারে।
টেস্ট বিজ্ঞাপন লোড করার সবচেয়ে সহজ উপায় হল Android ব্যানারের জন্য আমাদের নির্দিষ্ট টেস্ট বিজ্ঞাপন ইউনিট আইডি ব্যবহার করা:
ca-app-pub-3940256099942544/9214589741
এটি বিশেষভাবে কনফিগার করা হয়েছে যাতে প্রতিটি অনুরোধের জন্য টেস্ট বিজ্ঞাপন দেখানো যায় এবং আপনি কোডিং, টেস্টিং এবং ডিবাগিং করার সময় আপনার নিজের অ্যাপে এটি ব্যবহার করতে পারেন। শুধু মনে রাখবেন, অ্যাপ প্রকাশ করার আগে আপনার নিজস্ব বিজ্ঞাপন ইউনিট আইডি দিয়ে এটি পরিবর্তন করতে হবে।
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
JetpackCompose Utilities ফোল্ডার অন্তর্ভুক্ত করুন। এই ফোল্ডারে
AdViewঅবজেক্ট ও অ্যাসেট কম্পোজ করার জন্য হেল্পার অন্তর্ভুক্ত আছে।AdViewকম্পোজ করুন:
// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
Box(modifier = modifier.fillMaxWidth()) { BannerAd(adView, modifier) }
}
বিজ্ঞাপনের সাইজ সেট করুন
বড় অ্যাডাপ্টিভ ব্যানার, স্ক্রল করা যায় না এমন লেআউটের জন্য ডিজাইন করা বড় ফর্ম্যাট প্রদান করে। স্ট্যান্ডার্ড অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানারের তুলনায় এই ব্যানারগুলি আরও বেশি উচ্চতার জন্য অনুমতি দেয়, স্ক্রিনের উচ্চতার ২০% পর্যন্ত এবং ৫০ থেকে ১৫০ ডিপি-র মধ্যে। এই বর্ধিত স্পেস ভিডিও কন্টেন্টের জন্য অপ্টিমাইজ করা হয়েছে।
AdSize-কে নির্দিষ্ট প্রস্থ সহ
অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানার হিসেবে সেট করুন:
Java
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(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)
ডিভাইসের স্ক্রিন সাইজের থেকে ছোট বা সমান সাইজের বিজ্ঞাপন সেট করুন।
স্ক্রিনের সর্বাধিক সাইজ নির্ধারণ করতে, Resources.getDisplayMetrics
পদ্ধতি ব্যবহার করুন। AdSize অবজেক্টের ডাইমেনশন ঘনত্ব-নিরপেক্ষ পিক্সেল (dp) ব্যবহার করে। তুলনা করার সময়, স্ক্রিনের সাইজ
পিক্সেল থেকে ডিপি-তে কনভার্ট করুন।
সাইজ সংক্রান্ত সীমাবদ্ধতা সম্পর্কে আরও জানতে, বিজ্ঞাপনের অনুরোধের সাইজ সংক্রান্ত প্রয়োজনীয়তা দেখুন।
লেআউটে AdView যোগ করুন
আপনার অ্যাপের লেআউটে যোগ করার জন্য বিজ্ঞাপনের সাইজ ব্যবহার করে একটি AdView তৈরি করুন:
Java
// Create a new ad view.
adView = new AdView(this);
adView.setAdUnitId(AD_UNIT_ID);
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360));
// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);
Kotlin
// Create a new ad view.
val adView = AdView(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 { AdView(context) }
// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = 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()) { BannerAd(adView, modifier) }
}
বিজ্ঞাপন লোড করা
নিম্নলিখিত উদাহরণটি ৩৬০-প্রস্থের অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানার বিজ্ঞাপনকে একটি
AdView অবজেক্টে লোড করে:
Java
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
Kotlin
val adRequest = AdRequest.Builder().build()
adView.loadAd(adRequest)
বিজ্ঞাপন রিফ্রেশ করা
আপনি যদি রিফ্রেশ করার জন্য আপনার বিজ্ঞাপন ইউনিট কনফিগার করে থাকেন, তাহলে বিজ্ঞাপন লোড না হলে আপনাকে অন্য বিজ্ঞাপনের জন্য অনুরোধ করতে হবে না। AdMob UI-তে আপনার উল্লেখ করা যেকোনও রিফ্রেশ রেট Google Mobile Ads SDK (Legacy) মেনে চলে। আপনি রিফ্রেশ করার সুবিধা চালু না করে থাকলে, নতুন অনুরোধ করুন। বিজ্ঞাপন ইউনিট রিফ্রেশ করার ব্যাপারে আরও জানতে, যেমন রিফ্রেশ রেট সেট করা, দেখুন ব্যানার বিজ্ঞাপনের জন্য অটোমেটিক রিফ্রেশ ব্যবহার করুন।
বিজ্ঞাপন রিসোর্স রিলিজ করা
ব্যানার বিজ্ঞাপন ব্যবহার করা হয়ে গেলে, আপনি ব্যানার বিজ্ঞাপনের রিসোর্স রিলিজ করতে পারবেন।
বিজ্ঞাপনের রিসোর্স রিলিজ করতে, আপনি ভিউ হায়ারার্কি থেকে বিজ্ঞাপনটি সরিয়ে দেন এবং এর সব রেফারেন্স ড্রপ করেন:
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() |
ব্যবহারকারী বিজ্ঞাপনের গন্তব্য URL দেখার পরে অ্যাপে ফিরে এলে onAdClosed()
মেথডটি কল করা হয়। আপনার অ্যাপ এটি ব্যবহার করে সাসপেন্ড করা অ্যাক্টিভিটি আবার শুরু করতে পারে অথবা
ইন্টার্যাকশনের জন্য নিজেকে প্রস্তুত করতে প্রয়োজনীয় অন্য কোনও কাজ করতে পারে।
Android API ডেমো অ্যাপে বিজ্ঞাপন লিসেনার পদ্ধতি প্রয়োগ করার জন্য AdMob
AdListener উদাহরণ দেখুন।
|
onAdFailedToLoad() |
onAdFailedToLoad()
পদ্ধতিটিই একমাত্র পদ্ধতি যাতে একটি প্যারামিটার অন্তর্ভুক্ত থাকে। LoadAdError ধরনের ত্রুটি প্যারামিটার
কী ত্রুটি ঘটেছে তা বর্ণনা করে। আরও তথ্যের জন্য,
বিজ্ঞাপন লোড সংক্রান্ত সমস্যার ডিবাগিং
ডকুমেন্টেশন দেখুন।
|
onAdImpression() |
কোনও বিজ্ঞাপনের জন্য ইম্প্রেশন রেকর্ড করা হলে
onAdImpression() পদ্ধতিটি চালু করা হয়।
|
onAdLoaded() |
বিজ্ঞাপন লোড করা সম্পূর্ণ হলে
onAdLoaded() পদ্ধতিটি কার্যকর করা হয়। আপনি যদি নিশ্চিত না হন যে বিজ্ঞাপন লোড হবে কিনা,
তাহলে আপনার অ্যাক্টিভিটি বা ফ্র্যাগমেন্টে
AdView যোগ করতে দেরি করতে চাইলে,
উদাহরণস্বরূপ, আপনি এখানে তা করতে পারেন।
|
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>
হার্ডওয়্যার অ্যাক্সিলারেশন নিয়ন্ত্রণ করার বিকল্প সম্পর্কে আরও তথ্য পেতে, হার্ডওয়্যার অ্যাক্সিলারেশন গাইড দেখুন। মনে রাখবেন যে অ্যাক্টিভিটি বন্ধ থাকলে হার্ডওয়্যার অ্যাক্সিলারেশনের জন্য স্বতন্ত্র বিজ্ঞাপন ভিউ চালু করা যাবে না, তাই অ্যাক্টিভিটিতেই হার্ডওয়্যার অ্যাক্সিলারেশন চালু থাকতে হবে।
পরবর্তী ধাপ
আড়াল করা যায় এমন ব্যানার
আড়াল করা যায় এমন ব্যানার বিজ্ঞাপন হল এমন ব্যানার বিজ্ঞাপন যা প্রথমে বড় ওভারলে হিসেবে দেখানো হয় এবং বিজ্ঞাপনটি আড়াল করে ছোট সাইজে দেখানোর জন্য একটি বোতাম থাকে। আপনার পারফর্ম্যান্স আরও অপ্টিমাইজ করতে এটি ব্যবহার করার কথা বিবেচনা করুন। আরও বিবরণের জন্য আড়াল করা যায় এমন ব্যানার বিজ্ঞাপন দেখুন।
ইনলাইন অ্যাডাপ্টিভ ব্যানার
ইনলাইন অ্যাডাপ্টিভ ব্যানার, অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানারের তুলনায় বড় ও লম্বা হয়। এগুলির উচ্চতা পরিবর্তনশীল এবং ডিভাইসের স্ক্রিনের মতো লম্বা হতে পারে। যেসব অ্যাপ স্ক্রল করা যায় এমন কন্টেন্টে ব্যানার বিজ্ঞাপন দেখায়, সেগুলির জন্য অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানার বিজ্ঞাপনের পরিবর্তে ইনলাইন অ্যাডাপ্টিভ ব্যানার ব্যবহার করার সাজেশন দেওয়া হয়। আরও বিবরণের জন্য ইনলাইন অ্যাডাপ্টিভ ব্যানার দেখুন।