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

পূর্বশর্ত
- মোবাইল বিজ্ঞাপন ফ্লাটার প্লাগইন কীভাবে আমদানি করবেন সে সম্পর্কে শুরু করুন নির্দেশিকা থেকে নির্দেশাবলী অনুসরণ করুন।
শুরু করার আগে
আপনার অ্যাপে অ্যাডাপ্টিভ ব্যানার বাস্তবায়নের সময়, এই বিষয়গুলি লক্ষ্য করুন:
নিশ্চিত করুন যে আপনি Google মোবাইল বিজ্ঞাপন SDK-এর সর্বশেষ সংস্করণ ব্যবহার করছেন এবং যদি মধ্যস্থতা ব্যবহার করেন, তাহলে আপনার মধ্যস্থতা অ্যাডাপ্টারের সর্বশেষ সংস্করণ ব্যবহার করছেন।
ইনলাইন অ্যাডাপ্টিভ ব্যানারের আকারগুলি সম্পূর্ণ উপলব্ধ প্রস্থ ব্যবহার করার সময় সবচেয়ে ভালোভাবে কাজ করার জন্য ডিজাইন করা হয়েছে। বেশিরভাগ ক্ষেত্রে, এটি ব্যবহৃত ডিভাইসের স্ক্রিনের সম্পূর্ণ প্রস্থ হবে। প্রযোজ্য নিরাপদ স্থানগুলি বিবেচনায় নিতে ভুলবেন না।
অভিযোজিত আকারের সাথে কাজ করার জন্য আপনাকে নতুন লাইন আইটেম আপডেট বা তৈরি করতে হতে পারে। আরও জানুন ।
বিজ্ঞাপনের আকার পাওয়ার পদ্ধতিগুলি হল
-
AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(int width) -
AdSize.getLandscapeInlineAdaptiveBannerAdSize(int width) -
AdSize.getPortraitInlineAdaptiveBannerAdSize(int width) -
AdSize.getInlineAdaptiveBannerAdSize(int width, int maxHeight)
-
ইনলাইন অ্যাডাপ্টিভ ব্যানার API ব্যবহার করার সময়, Google মোবাইল বিজ্ঞাপন SDK প্রদত্ত প্রস্থ এবং একটি ইনলাইন ফ্ল্যাগ সহ একটি
AdSizeফেরত পাঠায়। উচ্চতা হয় শূন্য অথবাmaxHeight, আপনি কোন API ব্যবহার করছেন তার উপর নির্ভর করে। বিজ্ঞাপনটি ফেরত পাঠানো হলে এর প্রকৃত উচ্চতা উপলব্ধ করা হয়।একটি ইনলাইন অ্যাডাপ্টিভ ব্যানার স্ক্রোলযোগ্য কন্টেন্টে রাখার জন্য ডিজাইন করা হয়েছে। ব্যানারটি ডিভাইসের স্ক্রিনের সমান লম্বা হতে পারে অথবা API এর উপর নির্ভর করে সর্বোচ্চ উচ্চতা দ্বারা সীমাবদ্ধ হতে পারে।
বাস্তবায়ন
একটি সহজ ইনলাইন অ্যাডাপটিভ ব্যানার বাস্তবায়নের জন্য নিচের ধাপগুলি অনুসরণ করুন।
- একটি ইনলাইন অ্যাডাপটিভ ব্যানার বিজ্ঞাপনের আকার পান। আপনি যে আকারটি পাবেন তা অ্যাডাপটিভ ব্যানারের অনুরোধ করতে ব্যবহৃত হবে। অ্যাডাপটিভ বিজ্ঞাপনের আকার পেতে নিশ্চিত করুন যে আপনি:
- ব্যবহৃত ডিভাইসের প্রস্থ ঘনত্ব-স্বাধীন পিক্সেল ব্যবহার করে পান, অথবা যদি আপনি স্ক্রিনের সম্পূর্ণ প্রস্থ ব্যবহার করতে না চান তবে আপনার নিজস্ব প্রস্থ সেট করুন। স্ক্রিনের প্রস্থ পেতে আপনি
MediaQuery.of(context)ব্যবহার করতে পারেন। - বর্তমান ওরিয়েন্টেশনের জন্য একটি ইনলাইন অ্যাডাপটিভ
AdSizeঅবজেক্ট পেতে বিজ্ঞাপনের আকারের ক্লাসে উপযুক্ত স্ট্যাটিক পদ্ধতি ব্যবহার করুন, যেমনAdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(int width) - যদি আপনি ব্যানারের উচ্চতা সীমিত করতে চান, তাহলে আপনি স্ট্যাটিক পদ্ধতি ব্যবহার করতে পারেন
AdSize.getInlineAdaptiveBannerAdSize(int width, int maxHeight)।
- ব্যবহৃত ডিভাইসের প্রস্থ ঘনত্ব-স্বাধীন পিক্সেল ব্যবহার করে পান, অথবা যদি আপনি স্ক্রিনের সম্পূর্ণ প্রস্থ ব্যবহার করতে না চান তবে আপনার নিজস্ব প্রস্থ সেট করুন। স্ক্রিনের প্রস্থ পেতে আপনি
- আপনার বিজ্ঞাপন ইউনিট আইডি, অভিযোজিত বিজ্ঞাপনের আকার এবং একটি বিজ্ঞাপন অনুরোধ অবজেক্ট ব্যবহার করে একটি
AdManagerBannerAdঅবজেক্ট তৈরি করুন। - বিজ্ঞাপনটি লোড করুন।
-
onAdLoadedকলব্যাকে, আপডেট করা প্ল্যাটফর্ম বিজ্ঞাপনের আকার পেতে এবংAdWidgetকন্টেইনারের উচ্চতা আপডেট করতেAdManagerBannerAd.getPlatformAdSize()ব্যবহার করুন।
কোড উদাহরণ
এখানে একটি উদাহরণ উইজেট দেওয়া হল যা স্ক্রিনের প্রস্থের সাথে মানানসই একটি ইনলাইন অ্যাডাপটিভ ব্যানার লোড করে, ইনসেটের জন্য হিসাব করে:
import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
/// This example demonstrates inline adaptive banner ads.
///
/// Loads and shows an inline adaptive banner ad in a scrolling view,
/// and reloads the ad when the orientation changes.
class InlineAdaptiveExample extends StatefulWidget {
@override
_InlineAdaptiveExampleState createState() => _InlineAdaptiveExampleState();
}
class _InlineAdaptiveExampleState extends State<InlineAdaptiveExample> {
static const _insets = 16.0;
AdManagerBannerAd? _inlineAdaptiveAd;
bool _isLoaded = false;
AdSize? _adSize;
late Orientation _currentOrientation;
double get _adWidth => MediaQuery.of(context).size.width - (2 * _insets);
@override
void didChangeDependencies() {
super.didChangeDependencies();
_currentOrientation = MediaQuery.of(context).orientation;
_loadAd();
}
void _loadAd() async {
await _inlineAdaptiveAd?.dispose();
setState(() {
_inlineAdaptiveAd = null;
_isLoaded = false;
});
// Get an inline adaptive size for the current orientation.
AdSize size = AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(
_adWidth.truncate());
_inlineAdaptiveAd = AdManagerBannerAd(
// TODO: replace with your own ad unit.
adUnitId: '/21775744923/example/adaptive-banner',
size: size,
request: AdManagerAdRequest(),
listener: AdManagerBannerAdListener(
onAdLoaded: (Ad ad) async {
print('Inline adaptive banner loaded: ${ad.responseInfo}');
// After the ad is loaded, get the platform ad size and use it to
// update the height of the container. This is necessary because the
// height can change after the ad is loaded.
AdManagerBannerAd bannerAd = (ad as AdManagerBannerAd);
final AdSize? size = await bannerAd.getPlatformAdSize();
if (size == null) {
print('Error: getPlatformAdSize() returned null for $bannerAd');
return;
}
setState(() {
_inlineAdaptiveAd = bannerAd;
_isLoaded = true;
_adSize = size;
});
},
onAdFailedToLoad: (Ad ad, LoadAdError error) {
print('Inline adaptive banner failedToLoad: $error');
ad.dispose();
},
),
);
await _inlineAdaptiveAd!.load();
}
/// Gets a widget containing the ad, if one is loaded.
///
/// Returns an empty container if no ad is loaded, or the orientation
/// has changed. Also loads a new ad if the orientation changes.
Widget _getAdWidget() {
return OrientationBuilder(
builder: (context, orientation) {
if (_currentOrientation == orientation &&
_inlineAdaptiveAd != null &&
_isLoaded &&
_adSize != null) {
return Align(
child: Container(
width: _adWidth,
height: _adSize!.height.toDouble(),
child: AdWidget(
ad: _inlineAdaptiveAd!,
),
));
}
// Reload the ad if the orientation changes.
if (_currentOrientation != orientation) {
_currentOrientation = orientation;
_loadAd();
}
return Container();
},
);
}
@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(
title: Text('Inline adaptive banner example'),
),
body: Center(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: _insets),
child: ListView.separated(
itemCount: 20,
separatorBuilder: (BuildContext context, int index) {
return Container(
height: 40,
);
},
itemBuilder: (BuildContext context, int index) {
if (index == 10) {
return _getAdWidget();
}
return Text(
'Placeholder text',
style: TextStyle(fontSize: 24),
);
},
),
),
));
@override
void dispose() {
super.dispose();
_inlineAdaptiveAd?.dispose();
}
}