এই নির্দেশিকাটিতে একটি অ্যাঙ্করড অ্যাডাপ্টিভ ব্যানার বিজ্ঞাপন একটি অ্যান্ড্রয়েড অ্যাপে লোড করার বিষয়টি আলোচনা করা হয়েছে।
পূর্বশর্ত
- শুরু করুন নির্দেশিকাটি সম্পূর্ণ করুন।
সর্বদা পরীক্ষামূলক বিজ্ঞাপন দিয়ে পরীক্ষা করুন
আপনার অ্যাপ তৈরি এবং পরীক্ষা করার সময়, লাইভ, প্রোডাকশন বিজ্ঞাপনের পরিবর্তে পরীক্ষামূলক বিজ্ঞাপন ব্যবহার করুন। এটি না করলে আপনার অ্যাকাউন্ট সাসপেন্ড হতে পারে।
পরীক্ষামূলক বিজ্ঞাপন লোড করার সবচেয়ে সহজ উপায় হল অ্যান্ড্রয়েড ব্যানারের জন্য আমাদের ডেডিকেটেড পরীক্ষামূলক বিজ্ঞাপন ইউনিট আইডি ব্যবহার করা:
/21775744923/example/adaptive-banner
এটি বিশেষভাবে প্রতিটি অনুরোধের জন্য পরীক্ষামূলক বিজ্ঞাপন ফেরত দেওয়ার জন্য কনফিগার করা হয়েছে এবং আপনি কোডিং, পরীক্ষা এবং ডিবাগিংয়ের সময় এটি আপনার নিজস্ব অ্যাপে ব্যবহার করতে পারেন। আপনার অ্যাপ প্রকাশ করার আগে এটি আপনার নিজস্ব বিজ্ঞাপন ইউনিট আইডি দিয়ে প্রতিস্থাপন করুন।
GMA Next-Gen SDK পরীক্ষার বিজ্ঞাপনগুলি কীভাবে কাজ করে সে সম্পর্কে আরও তথ্যের জন্য, পরীক্ষামূলক বিজ্ঞাপনগুলি সক্ষম করুন দেখুন।
একটি AdView অবজেক্ট তৈরি করুন
ব্যানার প্রদর্শন করতে, নিম্নলিখিতগুলি করুন:
কোটলিন
- একটি
AdViewঅবজেক্ট তৈরি করুন। - আপনার অ্যাপের লেআউটে
AdViewঅবজেক্ট যোগ করুন।
নিম্নলিখিত উদাহরণটি একটি অ্যাপ লেআউটে AdView অবজেক্ট তৈরি করে এবং যোগ করে:
private fun createAdView(adViewContainer: FrameLayout, activity: Activity) {
val adView = AdView(activity)
adViewContainer.addView(adView)
}
জাভা
- একটি
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>
জেটপ্যাক কম্পোজ
- কম্পোজ UI-তে একটি
AndroidViewউপাদান অন্তর্ভুক্ত করুন। - ব্যানার বিজ্ঞাপন রাখার জন্য একটি
mutableStateOf<BannerAd?>ভেরিয়েবল সংজ্ঞায়িত করুন:
// Initialize required variables.
val context = LocalContext.current
var bannerAdState by remember { mutableStateOf<BannerAd?>(null) }
// The AdView is placed at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
bannerAdState?.let { bannerAd ->
Box(modifier = Modifier.fillMaxWidth()) {
// Display the ad within an AndroidView.
AndroidView(
modifier = modifier.wrapContentSize(),
factory = { bannerAd.getView(requireActivity()) },
)
}
}
}
একটি বিজ্ঞাপন লোড করুন
নিচের উদাহরণটি একটি ৩৬০-প্রস্থের অ্যাঙ্করড অ্যাডাপ্টিভ ব্যানার বিজ্ঞাপনকে একটি AdView অবজেক্টে লোড করে:
কোটলিন
private fun loadBannerAd(adView: AdView, activity: Activity) {
// Get a BannerAdRequest for a 360 wide anchored adaptive banner ad.
val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(activity, 360)
val adRequest = BannerAdRequest.Builder(AD_UNIT_ID, adSize).build()
adView.loadAd(
adRequest,
object : AdLoadCallback<BannerAd> {
override fun onAdLoaded(ad: BannerAd) {
ad.adEventCallback =
object : BannerAdEventCallback {
override fun onAdImpression() {
Log.d(TAG, "Banner ad recorded an impression.")
}
override fun onAdClicked() {
Log.d(TAG, "Banner ad clicked.")
}
}
}
override fun onAdFailedToLoad(adError: LoadAdError) {
Log.e(TAG, "Banner ad failed to load: $adError")
}
},
)
}
জাভা
private void loadBannerAd(AdView adView, Activity activity) {
// Get a BannerAdRequest for a 360 wide anchored adaptive banner ad.
AdSize adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(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) {
bannerAd.setAdEventCallback(
new BannerAdEventCallback() {
@Override
public void onAdImpression() {
Log.d(TAG, "Banner ad recorded an impression.");
}
@Override
public void onAdClicked() {
Log.d(TAG, "Banner ad clicked.");
}
});
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError adError) {
Log.e(TAG, "Banner ad failed to load: " + adError);
}
});
}
জেটপ্যাক কম্পোজ
// Request an anchored adaptive banner with a width of 360.
val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(requireContext(), 360)
// Load the ad when the screen is active.
val coroutineScope = rememberCoroutineScope()
val isPreviewMode = LocalInspectionMode.current
LaunchedEffect(context) {
bannerAdState?.destroy()
if (!isPreviewMode) {
coroutineScope.launch {
when (val result = BannerAd.load(BannerAdRequest.Builder(AD_UNIT_ID, adSize).build())) {
is AdLoadResult.Success -> {
bannerAdState = result.ad
}
is AdLoadResult.Failure -> {
showToast("Banner failed to load.")
Log.w(Constant.TAG, "Banner ad failed to load: $result.error")
}
}
}
}
}
একটি বিজ্ঞাপন রিফ্রেশ করুন
যদি আপনি আপনার বিজ্ঞাপন ইউনিট রিফ্রেশ করার জন্য কনফিগার করে থাকেন, তাহলে বিজ্ঞাপন লোড না হলে আপনাকে আর একটি বিজ্ঞাপনের অনুরোধ করতে হবে না। GMA Next-Gen SDK বিজ্ঞাপন ম্যানেজার UI-তে আপনার নির্দিষ্ট করা যেকোনো রিফ্রেশ রেট মেনে চলে। যদি আপনি রিফ্রেশ সক্ষম না করে থাকেন, তাহলে একটি নতুন অনুরোধ জারি করুন। বিজ্ঞাপন ইউনিট রিফ্রেশ সম্পর্কে আরও তথ্যের জন্য, যেমন রিফ্রেশ রেট সেট করার জন্য, মোবাইল অ্যাপে বিজ্ঞাপনের জন্য রিফ্রেশ রেট দেখুন।
একটি বিজ্ঞাপন রিসোর্স প্রকাশ করুন
যখন আপনি একটি ব্যানার বিজ্ঞাপন ব্যবহার করা শেষ করবেন, তখন আপনি ব্যানার বিজ্ঞাপনের রিসোর্সগুলি প্রকাশ করতে পারবেন।
বিজ্ঞাপনের রিসোর্স প্রকাশ করতে, আপনাকে ভিউ হায়ারার্কি থেকে বিজ্ঞাপনটি সরিয়ে ফেলতে হবে এবং এর সমস্ত রেফারেন্স বাদ দিতে হবে:
কোটলিন
// 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
জাভা
// Remove banner from view hierarchy.
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;
জেটপ্যাক কম্পোজ
// Destroy the ad when the screen is disposed.
DisposableEffect(Unit) { onDispose { bannerAdState?.destroy() } }
বিজ্ঞাপন ইভেন্ট
বিজ্ঞাপনের জীবনচক্রের বেশ কিছু ইভেন্ট আপনি শুনতে পারবেন, যার মধ্যে রয়েছে বিজ্ঞাপনের ছাপ এবং ক্লিক, সেইসাথে বিজ্ঞাপন খোলা এবং বন্ধ করা। ব্যানার দেখানোর আগে কলব্যাক সেট করার পরামর্শ দেওয়া হচ্ছে।কোটলিন
BannerAd.load(
BannerAdRequest.Builder("/21775744923/example/adaptive-banner", adSize).build(),
object : AdLoadCallback<BannerAd> {
override fun onAdLoaded(ad: BannerAd) {
ad.adEventCallback =
object : BannerAdEventCallback {
override fun onAdImpression() {
// Banner ad recorded an impression.
}
override fun onAdClicked() {
// Banner ad recorded a click.
}
override fun onAdShowedFullScreenContent() {
// Banner ad showed.
}
override fun onAdDismissedFullScreenContent() {
// Banner ad dismissed.
}
override fun onAdFailedToShowFullScreenContent(
fullScreenContentError: FullScreenContentError
) {
// Banner ad failed to show.
}
}
}
// ...
}
)
জাভা
BannerAd.load(
new BannerAdRequest.Builder("/21775744923/example/adaptive-banner", adSize).build(),
new AdLoadCallback<BannerAd>() {
@Override
public void onAdLoaded(@NonNull BannerAd ad) {
ad.setAdEventCallback(new BannerAdEventCallback() {
@Override
public void onAdImpression() {
// Banner ad recorded an impression.
}
@Override
public void onAdClicked() {
// Banner ad recorded a click.
}
@Override
public void onAdShowedFullScreenContent() {
// Banner ad showed.
}
@Override
public void onAdDismissedFullScreenContent() {
// Banner ad dismissed.
}
@Override
public void onAdFailedToShowFullScreenContent(
@NonNull FullScreenContentError fullScreenContentError) {
// Banner ad failed to show.
}
});
// ...
}
});
বিজ্ঞাপন রিফ্রেশ কলব্যাক
ব্যানার বিজ্ঞাপনের জন্য স্বয়ংক্রিয় রিফ্রেশ ব্যবহার করলে BannerAdRefreshCallback বিজ্ঞাপন রিফ্রেশিং ইভেন্টগুলি পরিচালনা করে। আপনার ভিউ হায়ারার্কিতে বিজ্ঞাপন ভিউ যোগ করার আগে কলব্যাক সেট করতে ভুলবেন না। বিজ্ঞাপন রিফ্রেশিং সম্পর্কে বিস্তারিত জানতে, একটি বিজ্ঞাপন রিফ্রেশ করুন দেখুন।
কোটলিন
BannerAd.load(
BannerAdRequest.Builder("/21775744923/example/adaptive-banner", adSize).build(),
object : AdLoadCallback<BannerAd> {
override fun onAdLoaded(ad: BannerAd) {
ad.bannerAdRefreshCallback =
object : BannerAdRefreshCallback {
// Set the ad refresh callbacks.
override fun onAdRefreshed() {
// Called when the ad refreshes.
}
override fun onAdFailedToRefresh(loadAdError: LoadAdError) {
// Called when the ad fails to refresh.
}
}
// ...
}
}
)
জাভা
BannerAd.load(
new BannerAdRequest.Builder("/21775744923/example/adaptive-banner", adSize).build(),
new AdLoadCallback<BannerAd>() {
@Override
public void onAdLoaded(@NonNull BannerAd ad) {
ad.setBannerAdRefreshCallback(
// Set the ad refresh callbacks.
new BannerAdRefreshCallback() {
@Override
public void onAdRefreshed() {
// Called when the ad refreshes.
}
@Override
public void onAdFailedToRefresh(@NonNull LoadAdError adError) {
// Called when the ad fails to refresh.
}
});
// ...
}
});
ভিডিও বিজ্ঞাপনের জন্য হার্ডওয়্যার ত্বরণ
আপনার ব্যানার বিজ্ঞাপন ভিউতে ভিডিও বিজ্ঞাপনগুলি সফলভাবে দেখানোর জন্য, হার্ডওয়্যার ত্বরণ সক্ষম করতে হবে।
হার্ডওয়্যার অ্যাক্সিলারেশন ডিফল্টরূপে সক্ষম করা থাকে, তবে কিছু অ্যাপ এটি অক্ষম করতে পারে। যদি এটি আপনার অ্যাপের ক্ষেত্রে প্রযোজ্য হয়, তাহলে আমরা বিজ্ঞাপন ব্যবহার করে এমন 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 এর ব্যবহার প্রদর্শনকারী উদাহরণ অ্যাপটি ডাউনলোড করুন এবং চালান।