এই গাইডে Android অ্যাপে অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানার বিজ্ঞাপন লোড করার ব্যাপারে আলোচনা করা হয়েছে।
পূর্বশর্ত
সবসময় টেস্ট বিজ্ঞাপন দিয়ে পরীক্ষা করুন
আপনার অ্যাপ তৈরি ও পরীক্ষা করার সময়, লাইভ, প্রোডাকশন বিজ্ঞাপনের পরিবর্তে পরীক্ষামূলক বিজ্ঞাপন ব্যবহার করছেন কিনা তা ভালো করে দেখে নিন। এটি না করলে আপনার অ্যাকাউন্ট সাসপেন্ড করা হতে পারে।
টেস্ট বিজ্ঞাপন লোড করার সবচেয়ে সহজ উপায় হল Android ব্যানারের জন্য আমাদের নির্দিষ্ট টেস্ট বিজ্ঞাপন ইউনিট আইডি ব্যবহার করা:
/21775744923/example/adaptive-banner
প্রতিটি অনুরোধের জন্য টেস্ট বিজ্ঞাপন দেখানোর জন্য এটি বিশেষভাবে কনফিগার করা হয়েছে এবং আপনি কোডিং, টেস্টিং এবং ডিবাগিং করার সময় এটি আপনার নিজের অ্যাপে ব্যবহার করতে পারেন। তবে, আপনার অ্যাপ প্রকাশ করার আগে, আপনার নিজের বিজ্ঞাপন ইউনিট আইডি দিয়ে এটি পরিবর্তন করতে ভুলবেন না।
GMA Next-Gen SDKটেস্ট বিজ্ঞাপন কীভাবে কাজ করে সেই সম্পর্কে আরও জানতে, টেস্ট বিজ্ঞাপন চালু করুন লিঙ্কে দেখুন।
AdView অবজেক্ট তৈরি করা
ব্যানার দেখাতে, নিম্নলিখিত কাজগুলি করুন:
Kotlin
AdViewঅবজেক্ট তৈরি করুন।- আপনার অ্যাপের লেআউটে
AdViewঅবজেক্ট যোগ করুন।
নিম্নলিখিত উদাহরণে অ্যাপ লেআউটে AdView অবজেক্ট তৈরি করে যোগ করা হয়:
private fun createAdView(adViewContainer: FrameLayout, activity: Activity) {
val adView = AdView(activity)
adViewContainer.addView(adView)
}
Java
AdViewঅবজেক্ট তৈরি করুন।- আপনার অ্যাপের লেআউটে
AdViewঅবজেক্ট যোগ করুন।
নিচের উদাহরণটি অ্যাপ লেআউটে AdView অবজেক্ট তৈরি করে যোগ করে:
private void createAdView(FrameLayout adViewContainer, Activity activity) {
AdView adView = new AdView(activity);
adViewContainer.addView(adView);
}
XML লেআউট
আপনার লেআউট XML ফাইলে একটি AdView এলিমেন্ট যোগ করুন:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.libraries.ads.mobile.sdk.banner.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Jetpack Compose
rememberব্লকের মধ্যেAdViewঅবজেক্ট তৈরি করুন।AdViewঅবজেক্ট দেখানোর জন্য Compose UI-তে একটিAndroidViewএলিমেন্ট যোগ করুন:
val context = LocalContext.current
val adView = remember { AdView(context) }
// The AdView is placed at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
Box(modifier = modifier.fillMaxWidth()) {
// Display the ad within an AndroidView.
AndroidView(modifier = modifier.wrapContentSize(), factory = { adView })
}
}
বিজ্ঞাপন লোড করা
নিচে দেওয়া উদাহরণে ৩৬০-উইথ অ্যাঙ্কর করা অ্যাডাপ্টিভ ব্যানার বিজ্ঞাপন একটি
AdView অবজেক্টে লোড করা হয়েছে:
Kotlin
private fun loadBannerAd(adView: AdView, activity: Activity) {
// Get a BannerAdRequest for a 360 wide large anchored adaptive banner ad.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(activity, 360)
val adRequest = BannerAdRequest.Builder(AD_UNIT_ID, adSize).build()
adView.loadAd(
adRequest,
object : AdLoadCallback<BannerAd> {
override fun onAdLoaded(ad: BannerAd) {
Log.d(TAG, "Banner ad loaded.")
}
override fun onAdFailedToLoad(adError: LoadAdError) {
Log.d(TAG, "Banner ad failed to load: $adError")
}
},
)
}
Java
private void loadBannerAd(AdView adView, Activity activity) {
// Get a BannerAdRequest for a 360 wide large anchored adaptive banner ad.
AdSize adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(activity, 360);
BannerAdRequest adRequest = new BannerAdRequest.Builder(AD_UNIT_ID, adSize).build();
adView.loadAd(
adRequest,
new AdLoadCallback<BannerAd>() {
@Override
public void onAdLoaded(@NonNull BannerAd bannerAd) {
Log.d(TAG, "Banner ad loaded.");
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError adError) {
Log.d(TAG, "Banner ad failed to load: " + adError);
}
});
}
Jetpack Compose
// Request a large anchored adaptive banner with a width of 360.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(context, 360)
// Load the ad when the screen is active.
val isPreviewMode = LocalInspectionMode.current
LaunchedEffect(adSize) {
if (!isPreviewMode) {
val adRequest = BannerAdRequest.Builder(AD_UNIT_ID, adSize).build()
adView.loadAd(
adRequest,
object : AdLoadCallback<BannerAd> {
override fun onAdLoaded(ad: BannerAd) {
Log.d(Constant.TAG, "Banner ad loaded.")
}
override fun onAdFailedToLoad(adError: LoadAdError) {
Log.w(Constant.TAG, "Banner ad failed to load: $adError")
}
},
)
}
}
বিজ্ঞাপন রিফ্রেশ করা
আপনি যদি রিফ্রেশ করার জন্য বিজ্ঞাপন ইউনিট কনফিগার করে থাকেন, তাহলে বিজ্ঞাপন লোড না হলে আপনাকে অন্য বিজ্ঞাপনের অনুরোধ করতে হবে না। GMA Next-Gen SDK Ad Manager UI-তে আপনার উল্লেখ করা যেকোনও রিফ্রেশ রেটকে সম্মান করে। আপনি রিফ্রেশ করার সুবিধা চালু না করে থাকলে, নতুন অনুরোধ করুন। বিজ্ঞাপন ইউনিট রিফ্রেশ করা সংক্রান্ত আরও বিবরণের জন্য, যেমন রিফ্রেশ রেট সেট করা, দেখুন মোবাইল অ্যাপে বিজ্ঞাপনের জন্য রিফ্রেশ রেট।
বিজ্ঞাপন রিসোর্স রিলিজ করা
ব্যানার বিজ্ঞাপন ব্যবহার করা হয়ে গেলে, আপনি ব্যানার বিজ্ঞাপনের রিসোর্স রিলিজ করতে পারবেন।
বিজ্ঞাপনের রিসোর্স রিলিজ করতে, আপনি ভিউ হায়ারার্কি থেকে বিজ্ঞাপনটি সরান এবং এর সব রেফারেন্স ড্রপ করেন:
Kotlin
private 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
}
Java
private void destroyBanner() {
// Remove banner from view hierarchy.
if (adView != null) {
if (adView.getParent() instanceof ViewGroup) {
((ViewGroup) adView.getParent()).removeView(adView);
}
// Destroy the banner ad resources.
adView.destroy();
}
// Drop reference to the banner ad.
adView = null;
}
Jetpack Compose
// Destroy the ad when the screen is disposed.
DisposableEffect(Unit) { onDispose { adView.destroy() } }
বিজ্ঞাপন ইভেন্ট
আপনি বিজ্ঞাপনের লাইফসাইকেলে বিভিন্ন ইভেন্টের জন্য শুনতে পারেন, যার মধ্যে বিজ্ঞাপনের ইম্প্রেশন ও ক্লিক, পাশাপাশি বিজ্ঞাপন খোলা ও বন্ধ করা অন্তর্ভুক্ত। ব্যানার দেখানোর আগে কলব্যাক সেট করার সাজেশন দেওয়া হয়।
Kotlin
override fun onAdLoaded(ad: BannerAd) {
ad.adEventCallback =
object : BannerAdEventCallback {
override fun onAdImpression() {
// Banner ad recorded an impression.
Log.d(TAG, "Banner ad recorded an impression.")
}
override fun onAdClicked() {
// Banner ad recorded a click.
Log.d(TAG, "Banner ad clicked.")
}
override fun onAdShowedFullScreenContent() {
// Banner ad showed.
Log.d(TAG, "Banner ad showed full screen content.")
}
override fun onAdDismissedFullScreenContent() {
// Banner ad dismissed.
Log.d(TAG, "Banner ad dismissed full screen content.")
}
override fun onAdFailedToShowFullScreenContent(
fullScreenContentError: FullScreenContentError
) {
// Banner ad failed to show.
Log.w(TAG, "Banner ad failed to show full screen content: $fullScreenContentError")
}
}
}
Java
@Override
public void onAdLoaded(@NonNull BannerAd bannerAd) {
bannerAd.setAdEventCallback(
new BannerAdEventCallback() {
@Override
public void onAdImpression() {
// Banner ad recorded an impression.
Log.d(TAG, "Banner ad recorded an impression.");
}
@Override
public void onAdClicked() {
// Banner ad recorded a click.
Log.d(TAG, "Banner ad clicked.");
}
@Override
public void onAdShowedFullScreenContent() {
// Banner ad showed.
Log.d(TAG, "Banner ad showed full screen content.");
}
@Override
public void onAdDismissedFullScreenContent() {
// Banner ad dismissed.
Log.d(TAG, "Banner ad dismissed full screen content.");
}
@Override
public void onAdFailedToShowFullScreenContent(
@NonNull FullScreenContentError fullScreenContentError) {
// Banner ad failed to show.
Log.w(
TAG,
"Banner ad failed to show full screen content: " + fullScreenContentError);
}
});
}
বিজ্ঞাপন রিফ্রেশ কলব্যাক
আপনি ব্যানার বিজ্ঞাপনের জন্য অটোমেটিক রিফ্রেশ ব্যবহার করলে,
BannerAdRefreshCallback বিজ্ঞাপন রিফ্রেশ করার ইভেন্ট ম্যানেজ করে। আপনার ভিউ হায়ারার্কিতে বিজ্ঞাপন ভিউ যোগ করার আগে কলব্যাক সেট করতে ভুলবেন না। বিজ্ঞাপন রিফ্রেশ করার ব্যাপারে বিস্তারিত জানতে, বিজ্ঞাপন রিফ্রেশ করুন বিকল্প দেখুন।
Kotlin
adView.loadAd(
adRequest,
object : AdLoadCallback<BannerAd> {
override fun onAdLoaded(ad: BannerAd) {
ad.bannerAdRefreshCallback =
object : BannerAdRefreshCallback {
override fun onAdRefreshed() {
// Banner ad refreshed.
Log.d(TAG, "Banner ad refreshed.")
}
override fun onAdFailedToRefresh(adError: LoadAdError) {
// Banner ad failed to refresh.
Log.w(TAG, "Banner ad failed to refresh: $adError")
}
}
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// Banner ad failed to load.
Log.w(TAG, "Banner ad failed to load: $adError")
}
},
)
Java
adView.loadAd(
adRequest,
new AdLoadCallback<BannerAd>() {
@Override
public void onAdLoaded(@NonNull BannerAd bannerAd) {
bannerAd.setBannerAdRefreshCallback(
new BannerAdRefreshCallback() {
@Override
public void onAdRefreshed() {
// Banner ad refreshed.
Log.d(TAG, "Banner ad refreshed.");
}
@Override
public void onAdFailedToRefresh(@NonNull LoadAdError adError) {
// Banner ad failed to refresh.
Log.w(TAG, "Banner ad failed to refresh: " + adError);
}
});
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError adError) {
// Banner ad failed to load.
Log.w(TAG, "Banner ad failed to load: " + adError);
}
});
ভিডিও বিজ্ঞাপনের জন্য হার্ডওয়্যার অ্যাক্সিলারেশন
আপনার ব্যানার বিজ্ঞাপনের ভিউতে ভিডিও বিজ্ঞাপন সঠিকভাবে দেখাতে, হার্ডওয়্যার অ্যাক্সিলারেশন অবশ্যই চালু করতে হবে।
হার্ডওয়্যার অ্যাক্সিলারেশন ডিফল্ট হিসেবে চালু করা থাকে, তবে কিছু অ্যাপ এটি বন্ধ করার সিদ্ধান্ত নিতে
পারে। আপনার অ্যাপের ক্ষেত্রে এটি প্রযোজ্য হলে, আমরা সাজেস্ট করি যে বিজ্ঞাপন ব্যবহার করে এমন
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>
হার্ডওয়্যার অ্যাক্সিলারেশন কন্ট্রোল করার বিকল্প সম্পর্কে আরও তথ্য পেতে, হার্ডওয়্যার অ্যাক্সিলারেশন গাইড দেখুন। মনে রাখবেন যে অ্যাক্টিভিটি বন্ধ থাকলে হার্ডওয়্যার অ্যাক্সিলারেশনের জন্য স্বতন্ত্র বিজ্ঞাপন ভিউ চালু করা যাবে না, তাই অ্যাক্টিভিটিতেই হার্ডওয়্যার অ্যাক্সিলারেশন চালু থাকতে হবে।
GMA Next-Gen SDK-এর ব্যবহার ডেমোনস্ট্রেট করে এমন উদাহরণ অ্যাপ ডাউনলোড ও রান করান।