প্ল্যাটফর্মের স্থানীয় UI উপাদানগুলি ব্যবহার করে ব্যবহারকারীদের কাছে নেটিভ বিজ্ঞাপনগুলি উপস্থাপন করা হয়—উদাহরণস্বরূপ, Android-এ একটি View
বা iOS-এ একটি UIView
৷
এই নির্দেশিকা আপনাকে দেখায় কিভাবে প্ল্যাটফর্ম-নির্দিষ্ট কোড ব্যবহার করে নেটিভ বিজ্ঞাপন লোড, প্রদর্শন এবং কাস্টমাইজ করতে হয়।
পূর্বশর্ত
- শুরু করুন গাইডটি সম্পূর্ণ করুন।
- দেশীয় বিজ্ঞাপন বিকল্পগুলির সাথে নিজেকে পরিচিত করুন৷
সর্বদা পরীক্ষার বিজ্ঞাপন দিয়ে পরীক্ষা করুন
আপনার অ্যাপ তৈরি এবং পরীক্ষা করার সময়, নিশ্চিত করুন যে আপনি লাইভ, প্রোডাকশন বিজ্ঞাপনের পরিবর্তে পরীক্ষামূলক বিজ্ঞাপন ব্যবহার করছেন। টেস্ট বিজ্ঞাপন লোড করার সবচেয়ে সহজ উপায় হল নেটিভ বিজ্ঞাপনের জন্য আমাদের ডেডিকেটেড টেস্ট অ্যাড ইউনিট আইডি ব্যবহার করা:
অ্যান্ড্রয়েড
ca-app-pub-3940256099942544/2247696110
iOS
ca-app-pub-3940256099942544/3986624511
পরীক্ষার বিজ্ঞাপন ইউনিটগুলি প্রতিটি অনুরোধের জন্য পরীক্ষার বিজ্ঞাপনগুলি ফেরত দেওয়ার জন্য কনফিগার করা হয়েছে, যাতে আপনি কোডিং, পরীক্ষা এবং ডিবাগ করার সময় সেগুলিকে আপনার নিজের অ্যাপে ব্যবহার করতে পারেন—শুধু আপনার অ্যাপ প্রকাশ করার আগে আপনি সেগুলিকে আপনার নিজস্ব বিজ্ঞাপন ইউনিট আইডি দিয়ে প্রতিস্থাপন করেছেন তা নিশ্চিত করুন৷
প্ল্যাটফর্ম-নির্দিষ্ট সেটআপ
আপনার নেটিভ বিজ্ঞাপনগুলি তৈরি করতে, আপনাকে iOS এবং Android এর জন্য প্ল্যাটফর্ম-নির্দিষ্ট কোড লিখতে হবে, তারপরে আপনার করা নেটিভ কোড পরিবর্তনগুলির সুবিধা নিতে আপনার ডার্ট বাস্তবায়ন সংশোধন করে।
অ্যান্ড্রয়েড
প্লাগইন আমদানি করুন
Google মোবাইল বিজ্ঞাপন প্লাগইন-এর অ্যান্ড্রয়েড বাস্তবায়নের জন্য NativeAdFactory
API বাস্তবায়নকারী একটি শ্রেণী প্রয়োজন। আপনার অ্যান্ড্রয়েড প্রকল্প থেকে এই API উল্লেখ করার জন্য, আপনার settings.gradle এ নিম্নলিখিত লাইন যোগ করুন:
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
pluginsFile.withInputStream { stream -> plugins.load(stream) }
}
plugins.each { name, path ->
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
include ":$name"
project(":$name").projectDir = pluginDirectory
}
NativeAdFactory বাস্তবায়ন করুন
এরপরে, একটি ক্লাস তৈরি করুন যা NativeAdFactory
প্রয়োগ করে এবং createNativeAd()
পদ্ধতিকে ওভাররাইড করে।
package io.flutter.plugins.googlemobileadsexample;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.widget.TextView;
import com.google.android.gms.ads.nativead.NativeAd;
import com.google.android.gms.ads.nativead.NativeAdView;
import io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin.NativeAdFactory;
import java.util.Map;
/**
* my_native_ad.xml can be found at
* github.com/googleads/googleads-mobile-flutter/blob/main/packages/google_mobile_ads/
* example/android/app/src/main/res/layout/my_native_ad.xml
*/
class NativeAdFactoryExample implements NativeAdFactory {
private final LayoutInflater layoutInflater;
NativeAdFactoryExample(LayoutInflater layoutInflater) {
this.layoutInflater = layoutInflater;
}
@Override
public NativeAdView createNativeAd(
NativeAd nativeAd, Map<String, Object> customOptions) {
final NativeAdView adView =
(NativeAdView) layoutInflater.inflate(R.layout.my_native_ad, null);
// Set the media view.
adView.setMediaView((MediaView) adView.findViewById(R.id.ad_media));
// Set other ad assets.
adView.setHeadlineView(adView.findViewById(R.id.ad_headline));
adView.setBodyView(adView.findViewById(R.id.ad_body));
adView.setCallToActionView(adView.findViewById(R.id.ad_call_to_action));
adView.setIconView(adView.findViewById(R.id.ad_app_icon));
adView.setPriceView(adView.findViewById(R.id.ad_price));
adView.setStarRatingView(adView.findViewById(R.id.ad_stars));
adView.setStoreView(adView.findViewById(R.id.ad_store));
adView.setAdvertiserView(adView.findViewById(R.id.ad_advertiser));
// The headline and mediaContent are guaranteed to be in every NativeAd.
((TextView) adView.getHeadlineView()).setText(nativeAd.getHeadline());
adView.getMediaView().setMediaContent(nativeAd.getMediaContent());
// These assets aren't guaranteed to be in every NativeAd, so it's important to
// check before trying to display them.
if (nativeAd.getBody() == null) {
adView.getBodyView().setVisibility(View.INVISIBLE);
} else {
adView.getBodyView().setVisibility(View.VISIBLE);
((TextView) adView.getBodyView()).setText(nativeAd.getBody());
}
if (nativeAd.getCallToAction() == null) {
adView.getCallToActionView().setVisibility(View.INVISIBLE);
} else {
adView.getCallToActionView().setVisibility(View.VISIBLE);
((Button) adView.getCallToActionView()).setText(nativeAd.getCallToAction());
}
if (nativeAd.getIcon() == null) {
adView.getIconView().setVisibility(View.GONE);
} else {
((ImageView) adView.getIconView()).setImageDrawable(nativeAd.getIcon().getDrawable());
adView.getIconView().setVisibility(View.VISIBLE);
}
if (nativeAd.getPrice() == null) {
adView.getPriceView().setVisibility(View.INVISIBLE);
} else {
adView.getPriceView().setVisibility(View.VISIBLE);
((TextView) adView.getPriceView()).setText(nativeAd.getPrice());
}
if (nativeAd.getStore() == null) {
adView.getStoreView().setVisibility(View.INVISIBLE);
} else {
adView.getStoreView().setVisibility(View.VISIBLE);
((TextView) adView.getStoreView()).setText(nativeAd.getStore());
}
if (nativeAd.getStarRating() == null) {
adView.getStarRatingView().setVisibility(View.INVISIBLE);
} else {
((RatingBar) adView.getStarRatingView()).setRating(nativeAd.getStarRating()
.floatValue());
adView.getStarRatingView().setVisibility(View.VISIBLE);
}
if (nativeAd.getAdvertiser() == null) {
adView.getAdvertiserView().setVisibility(View.INVISIBLE);
} else {
adView.getAdvertiserView().setVisibility(View.VISIBLE);
((TextView) adView.getAdvertiserView()).setText(nativeAd.getAdvertiser());
}
// This method tells the Google Mobile Ads SDK that you have finished populating your
// native ad view with this native ad.
adView.setNativeAd(nativeAd);
return adView;
}
}
আপনার NativeAdView
লেআউট কনফিগার করার উদাহরণের জন্য, my_native_ad.xml দেখুন।
আপনার NativeAdFactory নিবন্ধন করুন
MainActivity.configureFlutterEngine(FlutterEngine)
কল করার সময় প্রতিটি NativeAdFactory
বাস্তবায়নকে একটি factoryId
, একটি অনন্য String
শনাক্তকারীর সাথে নিবন্ধিত হতে হবে৷ factoryId
পরে ব্যবহার করা হবে যখন ডার্ট কোড থেকে একটি নেটিভ অ্যাড ইনস্ট্যান্টিশিয়েট করা হবে ।
একটি NativeAdFactory
আপনার অ্যাপ দ্বারা ব্যবহৃত প্রতিটি অনন্য নেটিভ বিজ্ঞাপন লেআউটের জন্য প্রয়োগ এবং নিবন্ধিত হতে পারে, অথবা একটি একক সমস্ত লেআউট পরিচালনা করতে পারে।
মনে রাখবেন যে অ্যাড-টু-অ্যাপ দিয়ে তৈরি করার সময়, NativeAdFactory
কেও cleanUpFlutterEngine(engine)
-এ আনরেজিস্টার করা উচিত।
একবার আপনি NativeAdFactoryExample
তৈরি করে নিলে, নিচের মত করে আপনার MainActivity
সেট আপ করুন:
package my.app.path;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin;
public class MainActivity extends FlutterActivity {
@Override
public void configureFlutterEngine(FlutterEngine flutterEngine) {
flutterEngine.getPlugins().add(new GoogleMobileAdsPlugin());
super.configureFlutterEngine(flutterEngine);
GoogleMobileAdsPlugin.registerNativeAdFactory(flutterEngine,
"adFactoryExample", NativeAdFactoryExample());
}
@Override
public void cleanUpFlutterEngine(FlutterEngine flutterEngine) {
GoogleMobileAdsPlugin.unregisterNativeAdFactory(flutterEngine, "adFactoryExample");
}
}
iOS
NativeAdFactory বাস্তবায়ন করুন
Google মোবাইল বিজ্ঞাপন প্লাগইনের iOS বাস্তবায়নের জন্য FLTNativeAdFactory
API বাস্তবায়নকারী একটি শ্রেণী প্রয়োজন। একটি ক্লাস তৈরি করুন যা NativeAdFactory
প্রয়োগ করে এবং createNativeAd()
পদ্ধতি প্রয়োগ করে।
#import "FLTGoogleMobileAdsPlugin.h"
/**
* The example NativeAdView.xib can be found at
* github.com/googleads/googleads-mobile-flutter/blob/main/packages/google_mobile_ads/
* example/ios/Runner/NativeAdView.xib
*/
@interface NativeAdFactoryExample : NSObject <FLTNativeAdFactory>
@end
@implementation NativeAdFactoryExample
- (GADNativeAdView *)createNativeAd:(GADNativeAd *)nativeAd
customOptions:(NSDictionary *)customOptions {
// Create and place the ad in the view hierarchy.
GADNativeAdView *adView =
[[NSBundle mainBundle] loadNibNamed:@"NativeAdView" owner:nil options:nil].firstObject;
// Populate the native ad view with the native ad assets.
// The headline is guaranteed to be present in every native ad.
((UILabel *)adView.headlineView).text = nativeAd.headline;
// These assets are not guaranteed to be present. Check that they are before
// showing or hiding them.
((UILabel *)adView.bodyView).text = nativeAd.body;
adView.bodyView.hidden = nativeAd.body ? NO : YES;
[((UIButton *)adView.callToActionView) setTitle:nativeAd.callToAction
forState:UIControlStateNormal];
adView.callToActionView.hidden = nativeAd.callToAction ? NO : YES;
((UIImageView *)adView.iconView).image = nativeAd.icon.image;
adView.iconView.hidden = nativeAd.icon ? NO : YES;
((UILabel *)adView.storeView).text = nativeAd.store;
adView.storeView.hidden = nativeAd.store ? NO : YES;
((UILabel *)adView.priceView).text = nativeAd.price;
adView.priceView.hidden = nativeAd.price ? NO : YES;
((UILabel *)adView.advertiserView).text = nativeAd.advertiser;
adView.advertiserView.hidden = nativeAd.advertiser ? NO : YES;
// In order for the SDK to process touch events properly, user interaction
// should be disabled.
adView.callToActionView.userInteractionEnabled = NO;
// Associate the native ad view with the native ad object. This is
// required to make the ad clickable.
// Note: this should always be done after populating the ad views.
adView.nativeAd = nativeAd;
return adView;
}
@end
আপনার GADNativeAdView
লেআউট কনফিগার করার উদাহরণের জন্য, NativeAdView.xib দেখুন।
আপনার NativeAdFactory নিবন্ধন করুন
প্রতিটি FLTNativeAdFactory
একটি factoryId
, একটি অনন্য String
শনাক্তকারী, registerNativeAdFactory:factoryId:nativeAdFactory:
-তে নিবন্ধিত হতে হবে। factoryId
পরে ব্যবহার করা হবে যখন ডার্ট কোড থেকে একটি নেটিভ অ্যাড ইনস্ট্যান্টিশিয়েট করা হবে ।
আপনার অ্যাপ দ্বারা ব্যবহৃত প্রতিটি অনন্য নেটিভ বিজ্ঞাপন লেআউটের জন্য একটি FLTNativeAdFactory
প্রয়োগ করা এবং নিবন্ধিত করা যেতে পারে, অথবা একটি একক সমস্ত লেআউট পরিচালনা করতে পারে।
একবার আপনি FLTNativeAdFactory
তৈরি করে নিলে, নিচের মত করে আপনার AppDelegate
সেট আপ করুন:
#import "FLTGoogleMobileAdsPlugin.h"
#import "NativeAdFactoryExample.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GeneratedPluginRegistrant registerWithRegistry:self];
// Must be added after GeneratedPluginRegistrant registerWithRegistry:self];
// is called.
NativeAdFactoryExample *nativeAdFactory = [[NativeAdFactoryExample alloc] init];
[FLTGoogleMobileAdsPlugin registerNativeAdFactory:self
factoryId:@"adFactoryExample"
nativeAdFactory:nativeAdFactory];
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
@end
বিজ্ঞাপন লোড করুন
আপনি আপনার প্ল্যাটফর্ম-নির্দিষ্ট কোড যোগ করার পরে, বিজ্ঞাপন লোড করতে ডার্টে যান। নিশ্চিত করুন যে factoryID
আপনার আগে নিবন্ধিত আইডির সাথে মেলে।
class NativeExampleState extends State<NativeExample> {
NativeAd? _nativeAd;
bool _nativeAdIsLoaded = false;
// TODO: replace this test ad unit with your own ad unit.
final String _adUnitId = Platform.isAndroid
? 'ca-app-pub-3940256099942544/2247696110'
: 'ca-app-pub-3940256099942544/3986624511';
/// Loads a native ad.
void loadAd() {
_nativeAd = NativeAd(
adUnitId: _adUnitId,
// Factory ID registered by your native ad factory implementation.
factoryId: 'adFactoryExample',
listener: NativeAdListener(
onAdLoaded: (ad) {
print('$NativeAd loaded.');
setState(() {
_nativeAdIsLoaded = true;
});
},
onAdFailedToLoad: (ad, error) {
// Dispose the ad here to free resources.
print('$NativeAd failedToLoad: $error');
ad.dispose();
},
),
request: const AdRequest(),
// Optional: Pass custom options to your native ad factory implementation.
customOptions: {'custom-option-1', 'custom-value-1'}
);
_nativeAd.load();
}
}
নেটিভ বিজ্ঞাপন ইভেন্ট
নেটিভ বিজ্ঞাপন ইন্টারঅ্যাকশনের সাথে সম্পর্কিত ইভেন্ট সম্পর্কে অবহিত হতে, বিজ্ঞাপনের listener
সম্পত্তি ব্যবহার করুন। তারপরে, বিজ্ঞাপন ইভেন্ট কলব্যাক পেতে NativeAdListener
প্রয়োগ করুন।
class NativeExampleState extends State<NativeExample> {
NativeAd? _nativeAd;
bool _nativeAdIsLoaded = false;
// TODO: replace this test ad unit with your own ad unit.
final String _adUnitId = Platform.isAndroid
? 'ca-app-pub-3940256099942544/2247696110'
: 'ca-app-pub-3940256099942544/3986624511';
/// Loads a native ad.
void loadAd() {
_nativeAd = NativeAd(
adUnitId: _adUnitId,
// Factory ID registered by your native ad factory implementation.
factoryId: 'adFactoryExample',
listener: NativeAdListener(
onAdLoaded: (ad) {
print('$NativeAd loaded.');
setState(() {
_nativeAdIsLoaded = true;
});
},
onAdFailedToLoad: (ad, error) {
// Dispose the ad here to free resources.
print('$NativeAd failedToLoad: $error');
ad.dispose();
},
// Called when a click is recorded for a NativeAd.
onAdClicked: (ad) {},
// Called when an impression occurs on the ad.
onAdImpression: (ad) {},
// Called when an ad removes an overlay that covers the screen.
onAdClosed: (ad) {},
// Called when an ad opens an overlay that covers the screen.
onAdOpened: (ad) {},
// For iOS only. Called before dismissing a full screen view
onAdWillDismissScreen: (ad) {},
// Called when an ad receives revenue value.
onPaidEvent: (ad, valueMicros, precision, currencyCode) {},
),
request: const AdRequest(),
// Optional: Pass custom options to your native ad factory implementation.
customOptions: {'custom-option-1', 'custom-value-1'}
);
_nativeAd.load();
}
}
বিজ্ঞাপন প্রদর্শন করুন
একটি উইজেট হিসাবে একটি NativeAd
প্রদর্শন করতে, আপনাকে load()
কল করার পরে একটি সমর্থিত বিজ্ঞাপন সহ একটি AdWidget
ইনস্ট্যান্টিয়েট করতে হবে। load()
কল করার আগে আপনি উইজেট তৈরি করতে পারেন, কিন্তু উইজেট ট্রিতে যোগ করার আগে load()
কল করতে হবে।
AdWidget
Flutter's Widget
ক্লাস থেকে উত্তরাধিকারসূত্রে প্রাপ্ত এবং অন্য যেকোনো উইজেটের মতো ব্যবহার করা যেতে পারে। iOS-এ, নিশ্চিত করুন যে আপনি একটি নির্দিষ্ট প্রস্থ এবং উচ্চতা সহ একটি পাত্রে উইজেটটি রেখেছেন। অন্যথায়, আপনার বিজ্ঞাপন প্রদর্শিত হতে পারে না.
final Container adContainer = Container(
alignment: Alignment.center,
child: AdWidget adWidget = AdWidget(ad: _nativeAd!),
width: WIDTH,
height: HEIGHT,
);
বিজ্ঞাপন নিষ্পত্তি করুন
একটি NativeAd
অবশ্যই নিষ্পত্তি করতে হবে যখন এটিতে অ্যাক্সেসের আর প্রয়োজন নেই৷ কখন dispose()
কল করতে হবে তার জন্য সর্বোত্তম অনুশীলন হল নেটিভ বিজ্ঞাপনের সাথে যুক্ত AdWidget
উইজেট ট্রি থেকে এবং AdListener.onAdFailedToLoad()
কলব্যাক থেকে সরানোর পরে।
পরবর্তী পদক্ষেপ
- আমাদের নেটিভ বিজ্ঞাপন প্লেবুকে নেটিভ বিজ্ঞাপন সম্পর্কে আরও জানুন।
- নেটিভ বিজ্ঞাপন নীতি এবং নির্দেশিকা দেখুন।
- কিছু গ্রাহকের সাফল্যের গল্প দেখুন: কেস স্টাডি 1 , কেস স্টাডি 2 ।
GitHub এ সম্পূর্ণ উদাহরণ
, প্ল্যাটফর্মের স্থানীয় UI উপাদানগুলি ব্যবহার করে ব্যবহারকারীদের কাছে নেটিভ বিজ্ঞাপনগুলি উপস্থাপন করা হয়—উদাহরণস্বরূপ, Android-এ একটি View
বা iOS-এ একটি UIView
৷
এই নির্দেশিকা আপনাকে দেখায় কিভাবে প্ল্যাটফর্ম-নির্দিষ্ট কোড ব্যবহার করে নেটিভ বিজ্ঞাপন লোড, প্রদর্শন এবং কাস্টমাইজ করতে হয়।
পূর্বশর্ত
- শুরু করুন গাইডটি সম্পূর্ণ করুন।
- দেশীয় বিজ্ঞাপন বিকল্পগুলির সাথে নিজেকে পরিচিত করুন৷
সর্বদা পরীক্ষার বিজ্ঞাপন দিয়ে পরীক্ষা করুন
আপনার অ্যাপ তৈরি এবং পরীক্ষা করার সময়, নিশ্চিত করুন যে আপনি লাইভ, প্রোডাকশন বিজ্ঞাপনের পরিবর্তে পরীক্ষামূলক বিজ্ঞাপন ব্যবহার করছেন। টেস্ট বিজ্ঞাপন লোড করার সবচেয়ে সহজ উপায় হল নেটিভ বিজ্ঞাপনের জন্য আমাদের ডেডিকেটেড টেস্ট অ্যাড ইউনিট আইডি ব্যবহার করা:
অ্যান্ড্রয়েড
ca-app-pub-3940256099942544/2247696110
iOS
ca-app-pub-3940256099942544/3986624511
পরীক্ষার বিজ্ঞাপন ইউনিটগুলি প্রতিটি অনুরোধের জন্য পরীক্ষার বিজ্ঞাপনগুলি ফেরত দেওয়ার জন্য কনফিগার করা হয়েছে, যাতে আপনি কোডিং, পরীক্ষা এবং ডিবাগ করার সময় সেগুলিকে আপনার নিজের অ্যাপে ব্যবহার করতে পারেন—শুধু আপনার অ্যাপ প্রকাশ করার আগে আপনি সেগুলিকে আপনার নিজস্ব বিজ্ঞাপন ইউনিট আইডি দিয়ে প্রতিস্থাপন করেছেন তা নিশ্চিত করুন৷
প্ল্যাটফর্ম-নির্দিষ্ট সেটআপ
আপনার নেটিভ বিজ্ঞাপনগুলি তৈরি করতে, আপনাকে iOS এবং Android এর জন্য প্ল্যাটফর্ম-নির্দিষ্ট কোড লিখতে হবে, তারপরে আপনার করা নেটিভ কোড পরিবর্তনগুলির সুবিধা নিতে আপনার ডার্ট বাস্তবায়ন সংশোধন করে।
অ্যান্ড্রয়েড
প্লাগইন আমদানি করুন
Google মোবাইল বিজ্ঞাপন প্লাগইন-এর অ্যান্ড্রয়েড বাস্তবায়নের জন্য NativeAdFactory
API বাস্তবায়নকারী একটি শ্রেণী প্রয়োজন। আপনার অ্যান্ড্রয়েড প্রকল্প থেকে এই API উল্লেখ করার জন্য, আপনার settings.gradle এ নিম্নলিখিত লাইন যোগ করুন:
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
pluginsFile.withInputStream { stream -> plugins.load(stream) }
}
plugins.each { name, path ->
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
include ":$name"
project(":$name").projectDir = pluginDirectory
}
NativeAdFactory বাস্তবায়ন করুন
এরপরে, একটি ক্লাস তৈরি করুন যা NativeAdFactory
প্রয়োগ করে এবং createNativeAd()
পদ্ধতিকে ওভাররাইড করে।
package io.flutter.plugins.googlemobileadsexample;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.widget.TextView;
import com.google.android.gms.ads.nativead.NativeAd;
import com.google.android.gms.ads.nativead.NativeAdView;
import io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin.NativeAdFactory;
import java.util.Map;
/**
* my_native_ad.xml can be found at
* github.com/googleads/googleads-mobile-flutter/blob/main/packages/google_mobile_ads/
* example/android/app/src/main/res/layout/my_native_ad.xml
*/
class NativeAdFactoryExample implements NativeAdFactory {
private final LayoutInflater layoutInflater;
NativeAdFactoryExample(LayoutInflater layoutInflater) {
this.layoutInflater = layoutInflater;
}
@Override
public NativeAdView createNativeAd(
NativeAd nativeAd, Map<String, Object> customOptions) {
final NativeAdView adView =
(NativeAdView) layoutInflater.inflate(R.layout.my_native_ad, null);
// Set the media view.
adView.setMediaView((MediaView) adView.findViewById(R.id.ad_media));
// Set other ad assets.
adView.setHeadlineView(adView.findViewById(R.id.ad_headline));
adView.setBodyView(adView.findViewById(R.id.ad_body));
adView.setCallToActionView(adView.findViewById(R.id.ad_call_to_action));
adView.setIconView(adView.findViewById(R.id.ad_app_icon));
adView.setPriceView(adView.findViewById(R.id.ad_price));
adView.setStarRatingView(adView.findViewById(R.id.ad_stars));
adView.setStoreView(adView.findViewById(R.id.ad_store));
adView.setAdvertiserView(adView.findViewById(R.id.ad_advertiser));
// The headline and mediaContent are guaranteed to be in every NativeAd.
((TextView) adView.getHeadlineView()).setText(nativeAd.getHeadline());
adView.getMediaView().setMediaContent(nativeAd.getMediaContent());
// These assets aren't guaranteed to be in every NativeAd, so it's important to
// check before trying to display them.
if (nativeAd.getBody() == null) {
adView.getBodyView().setVisibility(View.INVISIBLE);
} else {
adView.getBodyView().setVisibility(View.VISIBLE);
((TextView) adView.getBodyView()).setText(nativeAd.getBody());
}
if (nativeAd.getCallToAction() == null) {
adView.getCallToActionView().setVisibility(View.INVISIBLE);
} else {
adView.getCallToActionView().setVisibility(View.VISIBLE);
((Button) adView.getCallToActionView()).setText(nativeAd.getCallToAction());
}
if (nativeAd.getIcon() == null) {
adView.getIconView().setVisibility(View.GONE);
} else {
((ImageView) adView.getIconView()).setImageDrawable(nativeAd.getIcon().getDrawable());
adView.getIconView().setVisibility(View.VISIBLE);
}
if (nativeAd.getPrice() == null) {
adView.getPriceView().setVisibility(View.INVISIBLE);
} else {
adView.getPriceView().setVisibility(View.VISIBLE);
((TextView) adView.getPriceView()).setText(nativeAd.getPrice());
}
if (nativeAd.getStore() == null) {
adView.getStoreView().setVisibility(View.INVISIBLE);
} else {
adView.getStoreView().setVisibility(View.VISIBLE);
((TextView) adView.getStoreView()).setText(nativeAd.getStore());
}
if (nativeAd.getStarRating() == null) {
adView.getStarRatingView().setVisibility(View.INVISIBLE);
} else {
((RatingBar) adView.getStarRatingView()).setRating(nativeAd.getStarRating()
.floatValue());
adView.getStarRatingView().setVisibility(View.VISIBLE);
}
if (nativeAd.getAdvertiser() == null) {
adView.getAdvertiserView().setVisibility(View.INVISIBLE);
} else {
adView.getAdvertiserView().setVisibility(View.VISIBLE);
((TextView) adView.getAdvertiserView()).setText(nativeAd.getAdvertiser());
}
// This method tells the Google Mobile Ads SDK that you have finished populating your
// native ad view with this native ad.
adView.setNativeAd(nativeAd);
return adView;
}
}
আপনার NativeAdView
লেআউট কনফিগার করার উদাহরণের জন্য, my_native_ad.xml দেখুন।
আপনার NativeAdFactory নিবন্ধন করুন
MainActivity.configureFlutterEngine(FlutterEngine)
কল করার সময় প্রতিটি NativeAdFactory
বাস্তবায়নকে একটি factoryId
, একটি অনন্য String
শনাক্তকারীর সাথে নিবন্ধিত হতে হবে৷ factoryId
পরে ব্যবহার করা হবে যখন ডার্ট কোড থেকে একটি নেটিভ অ্যাড ইনস্ট্যান্টিশিয়েট করা হবে ।
একটি NativeAdFactory
আপনার অ্যাপ দ্বারা ব্যবহৃত প্রতিটি অনন্য নেটিভ বিজ্ঞাপন লেআউটের জন্য প্রয়োগ এবং নিবন্ধিত হতে পারে, অথবা একটি একক সমস্ত লেআউট পরিচালনা করতে পারে।
মনে রাখবেন যে অ্যাড-টু-অ্যাপ দিয়ে তৈরি করার সময়, NativeAdFactory
কেও cleanUpFlutterEngine(engine)
-এ আনরেজিস্টার করা উচিত।
একবার আপনি NativeAdFactoryExample
তৈরি করে নিলে, নিচের মত করে আপনার MainActivity
সেট আপ করুন:
package my.app.path;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin;
public class MainActivity extends FlutterActivity {
@Override
public void configureFlutterEngine(FlutterEngine flutterEngine) {
flutterEngine.getPlugins().add(new GoogleMobileAdsPlugin());
super.configureFlutterEngine(flutterEngine);
GoogleMobileAdsPlugin.registerNativeAdFactory(flutterEngine,
"adFactoryExample", NativeAdFactoryExample());
}
@Override
public void cleanUpFlutterEngine(FlutterEngine flutterEngine) {
GoogleMobileAdsPlugin.unregisterNativeAdFactory(flutterEngine, "adFactoryExample");
}
}
iOS
NativeAdFactory বাস্তবায়ন করুন
Google মোবাইল বিজ্ঞাপন প্লাগইনের iOS বাস্তবায়নের জন্য FLTNativeAdFactory
API বাস্তবায়নকারী একটি শ্রেণী প্রয়োজন। একটি ক্লাস তৈরি করুন যা NativeAdFactory
প্রয়োগ করে এবং createNativeAd()
পদ্ধতি প্রয়োগ করে।
#import "FLTGoogleMobileAdsPlugin.h"
/**
* The example NativeAdView.xib can be found at
* github.com/googleads/googleads-mobile-flutter/blob/main/packages/google_mobile_ads/
* example/ios/Runner/NativeAdView.xib
*/
@interface NativeAdFactoryExample : NSObject <FLTNativeAdFactory>
@end
@implementation NativeAdFactoryExample
- (GADNativeAdView *)createNativeAd:(GADNativeAd *)nativeAd
customOptions:(NSDictionary *)customOptions {
// Create and place the ad in the view hierarchy.
GADNativeAdView *adView =
[[NSBundle mainBundle] loadNibNamed:@"NativeAdView" owner:nil options:nil].firstObject;
// Populate the native ad view with the native ad assets.
// The headline is guaranteed to be present in every native ad.
((UILabel *)adView.headlineView).text = nativeAd.headline;
// These assets are not guaranteed to be present. Check that they are before
// showing or hiding them.
((UILabel *)adView.bodyView).text = nativeAd.body;
adView.bodyView.hidden = nativeAd.body ? NO : YES;
[((UIButton *)adView.callToActionView) setTitle:nativeAd.callToAction
forState:UIControlStateNormal];
adView.callToActionView.hidden = nativeAd.callToAction ? NO : YES;
((UIImageView *)adView.iconView).image = nativeAd.icon.image;
adView.iconView.hidden = nativeAd.icon ? NO : YES;
((UILabel *)adView.storeView).text = nativeAd.store;
adView.storeView.hidden = nativeAd.store ? NO : YES;
((UILabel *)adView.priceView).text = nativeAd.price;
adView.priceView.hidden = nativeAd.price ? NO : YES;
((UILabel *)adView.advertiserView).text = nativeAd.advertiser;
adView.advertiserView.hidden = nativeAd.advertiser ? NO : YES;
// In order for the SDK to process touch events properly, user interaction
// should be disabled.
adView.callToActionView.userInteractionEnabled = NO;
// Associate the native ad view with the native ad object. This is
// required to make the ad clickable.
// Note: this should always be done after populating the ad views.
adView.nativeAd = nativeAd;
return adView;
}
@end
আপনার GADNativeAdView
লেআউট কনফিগার করার উদাহরণের জন্য, NativeAdView.xib দেখুন।
আপনার NativeAdFactory নিবন্ধন করুন
প্রতিটি FLTNativeAdFactory
একটি factoryId
, একটি অনন্য String
শনাক্তকারী, registerNativeAdFactory:factoryId:nativeAdFactory:
-তে নিবন্ধিত হতে হবে। factoryId
পরে ব্যবহার করা হবে যখন ডার্ট কোড থেকে একটি নেটিভ অ্যাড ইনস্ট্যান্টিশিয়েট করা হবে ।
আপনার অ্যাপ দ্বারা ব্যবহৃত প্রতিটি অনন্য নেটিভ বিজ্ঞাপন লেআউটের জন্য একটি FLTNativeAdFactory
প্রয়োগ করা এবং নিবন্ধিত করা যেতে পারে, অথবা একটি একক সমস্ত লেআউট পরিচালনা করতে পারে।
একবার আপনি FLTNativeAdFactory
তৈরি করে নিলে, নিচের মত করে আপনার AppDelegate
সেট আপ করুন:
#import "FLTGoogleMobileAdsPlugin.h"
#import "NativeAdFactoryExample.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GeneratedPluginRegistrant registerWithRegistry:self];
// Must be added after GeneratedPluginRegistrant registerWithRegistry:self];
// is called.
NativeAdFactoryExample *nativeAdFactory = [[NativeAdFactoryExample alloc] init];
[FLTGoogleMobileAdsPlugin registerNativeAdFactory:self
factoryId:@"adFactoryExample"
nativeAdFactory:nativeAdFactory];
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
@end
বিজ্ঞাপন লোড করুন
আপনি আপনার প্ল্যাটফর্ম-নির্দিষ্ট কোড যোগ করার পরে, বিজ্ঞাপন লোড করতে ডার্টে যান। নিশ্চিত করুন যে factoryID
আপনার আগে নিবন্ধিত আইডির সাথে মেলে।
class NativeExampleState extends State<NativeExample> {
NativeAd? _nativeAd;
bool _nativeAdIsLoaded = false;
// TODO: replace this test ad unit with your own ad unit.
final String _adUnitId = Platform.isAndroid
? 'ca-app-pub-3940256099942544/2247696110'
: 'ca-app-pub-3940256099942544/3986624511';
/// Loads a native ad.
void loadAd() {
_nativeAd = NativeAd(
adUnitId: _adUnitId,
// Factory ID registered by your native ad factory implementation.
factoryId: 'adFactoryExample',
listener: NativeAdListener(
onAdLoaded: (ad) {
print('$NativeAd loaded.');
setState(() {
_nativeAdIsLoaded = true;
});
},
onAdFailedToLoad: (ad, error) {
// Dispose the ad here to free resources.
print('$NativeAd failedToLoad: $error');
ad.dispose();
},
),
request: const AdRequest(),
// Optional: Pass custom options to your native ad factory implementation.
customOptions: {'custom-option-1', 'custom-value-1'}
);
_nativeAd.load();
}
}
নেটিভ বিজ্ঞাপন ইভেন্ট
নেটিভ বিজ্ঞাপন ইন্টারঅ্যাকশনের সাথে সম্পর্কিত ইভেন্ট সম্পর্কে অবহিত হতে, বিজ্ঞাপনের listener
সম্পত্তি ব্যবহার করুন। তারপরে, বিজ্ঞাপন ইভেন্ট কলব্যাক পেতে NativeAdListener
প্রয়োগ করুন।
class NativeExampleState extends State<NativeExample> {
NativeAd? _nativeAd;
bool _nativeAdIsLoaded = false;
// TODO: replace this test ad unit with your own ad unit.
final String _adUnitId = Platform.isAndroid
? 'ca-app-pub-3940256099942544/2247696110'
: 'ca-app-pub-3940256099942544/3986624511';
/// Loads a native ad.
void loadAd() {
_nativeAd = NativeAd(
adUnitId: _adUnitId,
// Factory ID registered by your native ad factory implementation.
factoryId: 'adFactoryExample',
listener: NativeAdListener(
onAdLoaded: (ad) {
print('$NativeAd loaded.');
setState(() {
_nativeAdIsLoaded = true;
});
},
onAdFailedToLoad: (ad, error) {
// Dispose the ad here to free resources.
print('$NativeAd failedToLoad: $error');
ad.dispose();
},
// Called when a click is recorded for a NativeAd.
onAdClicked: (ad) {},
// Called when an impression occurs on the ad.
onAdImpression: (ad) {},
// Called when an ad removes an overlay that covers the screen.
onAdClosed: (ad) {},
// Called when an ad opens an overlay that covers the screen.
onAdOpened: (ad) {},
// For iOS only. Called before dismissing a full screen view
onAdWillDismissScreen: (ad) {},
// Called when an ad receives revenue value.
onPaidEvent: (ad, valueMicros, precision, currencyCode) {},
),
request: const AdRequest(),
// Optional: Pass custom options to your native ad factory implementation.
customOptions: {'custom-option-1', 'custom-value-1'}
);
_nativeAd.load();
}
}
বিজ্ঞাপন প্রদর্শন করুন
একটি উইজেট হিসাবে একটি NativeAd
প্রদর্শন করতে, আপনাকে load()
কল করার পরে একটি সমর্থিত বিজ্ঞাপন সহ একটি AdWidget
ইনস্ট্যান্টিয়েট করতে হবে। load()
কল করার আগে আপনি উইজেট তৈরি করতে পারেন, কিন্তু উইজেট ট্রিতে যোগ করার আগে load()
কল করতে হবে।
AdWidget
Flutter's Widget
ক্লাস থেকে উত্তরাধিকারসূত্রে প্রাপ্ত এবং অন্য যেকোনো উইজেটের মতো ব্যবহার করা যেতে পারে। iOS-এ, নিশ্চিত করুন যে আপনি একটি নির্দিষ্ট প্রস্থ এবং উচ্চতা সহ একটি পাত্রে উইজেটটি রেখেছেন। অন্যথায়, আপনার বিজ্ঞাপন প্রদর্শিত হতে পারে না.
final Container adContainer = Container(
alignment: Alignment.center,
child: AdWidget adWidget = AdWidget(ad: _nativeAd!),
width: WIDTH,
height: HEIGHT,
);
বিজ্ঞাপন নিষ্পত্তি করুন
একটি NativeAd
অবশ্যই নিষ্পত্তি করতে হবে যখন এটিতে অ্যাক্সেসের আর প্রয়োজন নেই৷ কখন dispose()
কল করতে হবে তার জন্য সর্বোত্তম অনুশীলন হল নেটিভ বিজ্ঞাপনের সাথে যুক্ত AdWidget
উইজেট ট্রি থেকে এবং AdListener.onAdFailedToLoad()
কলব্যাক থেকে সরানোর পরে।
পরবর্তী পদক্ষেপ
- আমাদের নেটিভ বিজ্ঞাপন প্লেবুকে নেটিভ বিজ্ঞাপন সম্পর্কে আরও জানুন।
- নেটিভ বিজ্ঞাপন নীতি এবং নির্দেশিকা দেখুন।
- কিছু গ্রাহকের সাফল্যের গল্প দেখুন: কেস স্টাডি 1 , কেস স্টাডি 2 ।
GitHub এ সম্পূর্ণ উদাহরণ
, প্ল্যাটফর্মের স্থানীয় UI উপাদানগুলি ব্যবহার করে ব্যবহারকারীদের কাছে নেটিভ বিজ্ঞাপনগুলি উপস্থাপন করা হয়—উদাহরণস্বরূপ, Android-এ একটি View
বা iOS-এ একটি UIView
৷
এই নির্দেশিকা আপনাকে দেখায় কিভাবে প্ল্যাটফর্ম-নির্দিষ্ট কোড ব্যবহার করে নেটিভ বিজ্ঞাপন লোড, প্রদর্শন এবং কাস্টমাইজ করতে হয়।
পূর্বশর্ত
- শুরু করুন গাইডটি সম্পূর্ণ করুন।
- দেশীয় বিজ্ঞাপন বিকল্পগুলির সাথে নিজেকে পরিচিত করুন৷
সর্বদা পরীক্ষার বিজ্ঞাপন দিয়ে পরীক্ষা করুন
আপনার অ্যাপ তৈরি এবং পরীক্ষা করার সময়, নিশ্চিত করুন যে আপনি লাইভ, প্রোডাকশন বিজ্ঞাপনের পরিবর্তে পরীক্ষামূলক বিজ্ঞাপন ব্যবহার করছেন। টেস্ট বিজ্ঞাপন লোড করার সবচেয়ে সহজ উপায় হল নেটিভ বিজ্ঞাপনের জন্য আমাদের ডেডিকেটেড টেস্ট অ্যাড ইউনিট আইডি ব্যবহার করা:
অ্যান্ড্রয়েড
ca-app-pub-3940256099942544/2247696110
iOS
ca-app-pub-3940256099942544/3986624511
পরীক্ষার বিজ্ঞাপন ইউনিটগুলি প্রতিটি অনুরোধের জন্য পরীক্ষার বিজ্ঞাপনগুলি ফেরত দেওয়ার জন্য কনফিগার করা হয়েছে, যাতে আপনি কোডিং, পরীক্ষা এবং ডিবাগ করার সময় সেগুলিকে আপনার নিজের অ্যাপে ব্যবহার করতে পারেন—শুধু আপনার অ্যাপ প্রকাশ করার আগে আপনি সেগুলিকে আপনার নিজস্ব বিজ্ঞাপন ইউনিট আইডি দিয়ে প্রতিস্থাপন করেছেন তা নিশ্চিত করুন৷
প্ল্যাটফর্ম-নির্দিষ্ট সেটআপ
আপনার নেটিভ বিজ্ঞাপনগুলি তৈরি করতে, আপনাকে iOS এবং Android এর জন্য প্ল্যাটফর্ম-নির্দিষ্ট কোড লিখতে হবে, তারপরে আপনার করা নেটিভ কোড পরিবর্তনগুলির সুবিধা নিতে আপনার ডার্ট বাস্তবায়ন সংশোধন করে।
অ্যান্ড্রয়েড
প্লাগইন আমদানি করুন
Google মোবাইল বিজ্ঞাপন প্লাগইন-এর অ্যান্ড্রয়েড বাস্তবায়নের জন্য NativeAdFactory
API বাস্তবায়নকারী একটি শ্রেণী প্রয়োজন। আপনার অ্যান্ড্রয়েড প্রকল্প থেকে এই API উল্লেখ করার জন্য, আপনার settings.gradle এ নিম্নলিখিত লাইন যোগ করুন:
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
pluginsFile.withInputStream { stream -> plugins.load(stream) }
}
plugins.each { name, path ->
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
include ":$name"
project(":$name").projectDir = pluginDirectory
}
NativeAdFactory বাস্তবায়ন করুন
এরপরে, একটি ক্লাস তৈরি করুন যা NativeAdFactory
প্রয়োগ করে এবং createNativeAd()
পদ্ধতিকে ওভাররাইড করে।
package io.flutter.plugins.googlemobileadsexample;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.widget.TextView;
import com.google.android.gms.ads.nativead.NativeAd;
import com.google.android.gms.ads.nativead.NativeAdView;
import io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin.NativeAdFactory;
import java.util.Map;
/**
* my_native_ad.xml can be found at
* github.com/googleads/googleads-mobile-flutter/blob/main/packages/google_mobile_ads/
* example/android/app/src/main/res/layout/my_native_ad.xml
*/
class NativeAdFactoryExample implements NativeAdFactory {
private final LayoutInflater layoutInflater;
NativeAdFactoryExample(LayoutInflater layoutInflater) {
this.layoutInflater = layoutInflater;
}
@Override
public NativeAdView createNativeAd(
NativeAd nativeAd, Map<String, Object> customOptions) {
final NativeAdView adView =
(NativeAdView) layoutInflater.inflate(R.layout.my_native_ad, null);
// Set the media view.
adView.setMediaView((MediaView) adView.findViewById(R.id.ad_media));
// Set other ad assets.
adView.setHeadlineView(adView.findViewById(R.id.ad_headline));
adView.setBodyView(adView.findViewById(R.id.ad_body));
adView.setCallToActionView(adView.findViewById(R.id.ad_call_to_action));
adView.setIconView(adView.findViewById(R.id.ad_app_icon));
adView.setPriceView(adView.findViewById(R.id.ad_price));
adView.setStarRatingView(adView.findViewById(R.id.ad_stars));
adView.setStoreView(adView.findViewById(R.id.ad_store));
adView.setAdvertiserView(adView.findViewById(R.id.ad_advertiser));
// The headline and mediaContent are guaranteed to be in every NativeAd.
((TextView) adView.getHeadlineView()).setText(nativeAd.getHeadline());
adView.getMediaView().setMediaContent(nativeAd.getMediaContent());
// These assets aren't guaranteed to be in every NativeAd, so it's important to
// check before trying to display them.
if (nativeAd.getBody() == null) {
adView.getBodyView().setVisibility(View.INVISIBLE);
} else {
adView.getBodyView().setVisibility(View.VISIBLE);
((TextView) adView.getBodyView()).setText(nativeAd.getBody());
}
if (nativeAd.getCallToAction() == null) {
adView.getCallToActionView().setVisibility(View.INVISIBLE);
} else {
adView.getCallToActionView().setVisibility(View.VISIBLE);
((Button) adView.getCallToActionView()).setText(nativeAd.getCallToAction());
}
if (nativeAd.getIcon() == null) {
adView.getIconView().setVisibility(View.GONE);
} else {
((ImageView) adView.getIconView()).setImageDrawable(nativeAd.getIcon().getDrawable());
adView.getIconView().setVisibility(View.VISIBLE);
}
if (nativeAd.getPrice() == null) {
adView.getPriceView().setVisibility(View.INVISIBLE);
} else {
adView.getPriceView().setVisibility(View.VISIBLE);
((TextView) adView.getPriceView()).setText(nativeAd.getPrice());
}
if (nativeAd.getStore() == null) {
adView.getStoreView().setVisibility(View.INVISIBLE);
} else {
adView.getStoreView().setVisibility(View.VISIBLE);
((TextView) adView.getStoreView()).setText(nativeAd.getStore());
}
if (nativeAd.getStarRating() == null) {
adView.getStarRatingView().setVisibility(View.INVISIBLE);
} else {
((RatingBar) adView.getStarRatingView()).setRating(nativeAd.getStarRating()
.floatValue());
adView.getStarRatingView().setVisibility(View.VISIBLE);
}
if (nativeAd.getAdvertiser() == null) {
adView.getAdvertiserView().setVisibility(View.INVISIBLE);
} else {
adView.getAdvertiserView().setVisibility(View.VISIBLE);
((TextView) adView.getAdvertiserView()).setText(nativeAd.getAdvertiser());
}
// This method tells the Google Mobile Ads SDK that you have finished populating your
// native ad view with this native ad.
adView.setNativeAd(nativeAd);
return adView;
}
}
আপনার NativeAdView
লেআউট কনফিগার করার উদাহরণের জন্য, my_native_ad.xml দেখুন।
আপনার NativeAdFactory নিবন্ধন করুন
MainActivity.configureFlutterEngine(FlutterEngine)
কল করার সময় প্রতিটি NativeAdFactory
বাস্তবায়নকে একটি factoryId
, একটি অনন্য String
শনাক্তকারীর সাথে নিবন্ধিত হতে হবে৷ factoryId
পরে ব্যবহার করা হবে যখন ডার্ট কোড থেকে একটি নেটিভ অ্যাড ইনস্ট্যান্টিশিয়েট করা হবে ।
একটি NativeAdFactory
আপনার অ্যাপ দ্বারা ব্যবহৃত প্রতিটি অনন্য নেটিভ বিজ্ঞাপন লেআউটের জন্য প্রয়োগ এবং নিবন্ধিত হতে পারে, অথবা একটি একক সমস্ত লেআউট পরিচালনা করতে পারে।
মনে রাখবেন যে অ্যাড-টু-অ্যাপ দিয়ে তৈরি করার সময়, NativeAdFactory
কেও cleanUpFlutterEngine(engine)
-এ আনরেজিস্টার করা উচিত।
একবার আপনি NativeAdFactoryExample
তৈরি করে নিলে, নিচের মত করে আপনার MainActivity
সেট আপ করুন:
package my.app.path;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin;
public class MainActivity extends FlutterActivity {
@Override
public void configureFlutterEngine(FlutterEngine flutterEngine) {
flutterEngine.getPlugins().add(new GoogleMobileAdsPlugin());
super.configureFlutterEngine(flutterEngine);
GoogleMobileAdsPlugin.registerNativeAdFactory(flutterEngine,
"adFactoryExample", NativeAdFactoryExample());
}
@Override
public void cleanUpFlutterEngine(FlutterEngine flutterEngine) {
GoogleMobileAdsPlugin.unregisterNativeAdFactory(flutterEngine, "adFactoryExample");
}
}
iOS
NativeAdFactory বাস্তবায়ন করুন
Google মোবাইল বিজ্ঞাপন প্লাগইনের iOS বাস্তবায়নের জন্য FLTNativeAdFactory
API বাস্তবায়নকারী একটি শ্রেণী প্রয়োজন। একটি ক্লাস তৈরি করুন যা NativeAdFactory
প্রয়োগ করে এবং createNativeAd()
পদ্ধতি প্রয়োগ করে।
#import "FLTGoogleMobileAdsPlugin.h"
/**
* The example NativeAdView.xib can be found at
* github.com/googleads/googleads-mobile-flutter/blob/main/packages/google_mobile_ads/
* example/ios/Runner/NativeAdView.xib
*/
@interface NativeAdFactoryExample : NSObject <FLTNativeAdFactory>
@end
@implementation NativeAdFactoryExample
- (GADNativeAdView *)createNativeAd:(GADNativeAd *)nativeAd
customOptions:(NSDictionary *)customOptions {
// Create and place the ad in the view hierarchy.
GADNativeAdView *adView =
[[NSBundle mainBundle] loadNibNamed:@"NativeAdView" owner:nil options:nil].firstObject;
// Populate the native ad view with the native ad assets.
// The headline is guaranteed to be present in every native ad.
((UILabel *)adView.headlineView).text = nativeAd.headline;
// These assets are not guaranteed to be present. Check that they are before
// showing or hiding them.
((UILabel *)adView.bodyView).text = nativeAd.body;
adView.bodyView.hidden = nativeAd.body ? NO : YES;
[((UIButton *)adView.callToActionView) setTitle:nativeAd.callToAction
forState:UIControlStateNormal];
adView.callToActionView.hidden = nativeAd.callToAction ? NO : YES;
((UIImageView *)adView.iconView).image = nativeAd.icon.image;
adView.iconView.hidden = nativeAd.icon ? NO : YES;
((UILabel *)adView.storeView).text = nativeAd.store;
adView.storeView.hidden = nativeAd.store ? NO : YES;
((UILabel *)adView.priceView).text = nativeAd.price;
adView.priceView.hidden = nativeAd.price ? NO : YES;
((UILabel *)adView.advertiserView).text = nativeAd.advertiser;
adView.advertiserView.hidden = nativeAd.advertiser ? NO : YES;
// In order for the SDK to process touch events properly, user interaction
// should be disabled.
adView.callToActionView.userInteractionEnabled = NO;
// Associate the native ad view with the native ad object. This is
// required to make the ad clickable.
// Note: this should always be done after populating the ad views.
adView.nativeAd = nativeAd;
return adView;
}
@end
আপনার GADNativeAdView
লেআউট কনফিগার করার উদাহরণের জন্য, NativeAdView.xib দেখুন।
আপনার NativeAdFactory নিবন্ধন করুন
প্রতিটি FLTNativeAdFactory
একটি factoryId
, একটি অনন্য String
শনাক্তকারী, registerNativeAdFactory:factoryId:nativeAdFactory:
-তে নিবন্ধিত হতে হবে। factoryId
পরে ব্যবহার করা হবে যখন ডার্ট কোড থেকে একটি নেটিভ অ্যাড ইনস্ট্যান্টিশিয়েট করা হবে ।
আপনার অ্যাপ দ্বারা ব্যবহৃত প্রতিটি অনন্য নেটিভ বিজ্ঞাপন লেআউটের জন্য একটি FLTNativeAdFactory
প্রয়োগ করা এবং নিবন্ধিত করা যেতে পারে, অথবা একটি একক সমস্ত লেআউট পরিচালনা করতে পারে।
একবার আপনি FLTNativeAdFactory
তৈরি করে নিলে, নিচের মত করে আপনার AppDelegate
সেট আপ করুন:
#import "FLTGoogleMobileAdsPlugin.h"
#import "NativeAdFactoryExample.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GeneratedPluginRegistrant registerWithRegistry:self];
// Must be added after GeneratedPluginRegistrant registerWithRegistry:self];
// is called.
NativeAdFactoryExample *nativeAdFactory = [[NativeAdFactoryExample alloc] init];
[FLTGoogleMobileAdsPlugin registerNativeAdFactory:self
factoryId:@"adFactoryExample"
nativeAdFactory:nativeAdFactory];
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
@end
বিজ্ঞাপন লোড করুন
আপনি আপনার প্ল্যাটফর্ম-নির্দিষ্ট কোড যোগ করার পরে, বিজ্ঞাপন লোড করতে ডার্টে যান। নিশ্চিত করুন যে factoryID
আপনার আগে নিবন্ধিত আইডির সাথে মেলে।
class NativeExampleState extends State<NativeExample> {
NativeAd? _nativeAd;
bool _nativeAdIsLoaded = false;
// TODO: replace this test ad unit with your own ad unit.
final String _adUnitId = Platform.isAndroid
? 'ca-app-pub-3940256099942544/2247696110'
: 'ca-app-pub-3940256099942544/3986624511';
/// Loads a native ad.
void loadAd() {
_nativeAd = NativeAd(
adUnitId: _adUnitId,
// Factory ID registered by your native ad factory implementation.
factoryId: 'adFactoryExample',
listener: NativeAdListener(
onAdLoaded: (ad) {
print('$NativeAd loaded.');
setState(() {
_nativeAdIsLoaded = true;
});
},
onAdFailedToLoad: (ad, error) {
// Dispose the ad here to free resources.
print('$NativeAd failedToLoad: $error');
ad.dispose();
},
),
request: const AdRequest(),
// Optional: Pass custom options to your native ad factory implementation.
customOptions: {'custom-option-1', 'custom-value-1'}
);
_nativeAd.load();
}
}
নেটিভ বিজ্ঞাপন ইভেন্ট
নেটিভ বিজ্ঞাপন ইন্টারঅ্যাকশনের সাথে সম্পর্কিত ইভেন্ট সম্পর্কে অবহিত হতে, বিজ্ঞাপনের listener
সম্পত্তি ব্যবহার করুন। তারপরে, বিজ্ঞাপন ইভেন্ট কলব্যাক পেতে NativeAdListener
প্রয়োগ করুন।
class NativeExampleState extends State<NativeExample> {
NativeAd? _nativeAd;
bool _nativeAdIsLoaded = false;
// TODO: replace this test ad unit with your own ad unit.
final String _adUnitId = Platform.isAndroid
? 'ca-app-pub-3940256099942544/2247696110'
: 'ca-app-pub-3940256099942544/3986624511';
/// Loads a native ad.
void loadAd() {
_nativeAd = NativeAd(
adUnitId: _adUnitId,
// Factory ID registered by your native ad factory implementation.
factoryId: 'adFactoryExample',
listener: NativeAdListener(
onAdLoaded: (ad) {
print('$NativeAd loaded.');
setState(() {
_nativeAdIsLoaded = true;
});
},
onAdFailedToLoad: (ad, error) {
// Dispose the ad here to free resources.
print('$NativeAd failedToLoad: $error');
ad.dispose();
},
// Called when a click is recorded for a NativeAd.
onAdClicked: (ad) {},
// Called when an impression occurs on the ad.
onAdImpression: (ad) {},
// Called when an ad removes an overlay that covers the screen.
onAdClosed: (ad) {},
// Called when an ad opens an overlay that covers the screen.
onAdOpened: (ad) {},
// For iOS only. Called before dismissing a full screen view
onAdWillDismissScreen: (ad) {},
// Called when an ad receives revenue value.
onPaidEvent: (ad, valueMicros, precision, currencyCode) {},
),
request: const AdRequest(),
// Optional: Pass custom options to your native ad factory implementation.
customOptions: {'custom-option-1', 'custom-value-1'}
);
_nativeAd.load();
}
}
বিজ্ঞাপন প্রদর্শন করুন
একটি উইজেট হিসাবে একটি NativeAd
প্রদর্শন করতে, আপনাকে load()
কল করার পরে একটি সমর্থিত বিজ্ঞাপন সহ একটি AdWidget
ইনস্ট্যান্টিয়েট করতে হবে। load()
কল করার আগে আপনি উইজেট তৈরি করতে পারেন, কিন্তু উইজেট ট্রিতে যোগ করার আগে load()
কল করতে হবে।
AdWidget
Flutter's Widget
ক্লাস থেকে উত্তরাধিকারসূত্রে প্রাপ্ত এবং অন্য যেকোনো উইজেটের মতো ব্যবহার করা যেতে পারে। iOS-এ, নিশ্চিত করুন যে আপনি একটি নির্দিষ্ট প্রস্থ এবং উচ্চতা সহ একটি পাত্রে উইজেটটি রেখেছেন। অন্যথায়, আপনার বিজ্ঞাপন প্রদর্শিত হতে পারে না.
final Container adContainer = Container(
alignment: Alignment.center,
child: AdWidget adWidget = AdWidget(ad: _nativeAd!),
width: WIDTH,
height: HEIGHT,
);
বিজ্ঞাপন নিষ্পত্তি করুন
একটি NativeAd
অবশ্যই নিষ্পত্তি করতে হবে যখন এটিতে অ্যাক্সেসের আর প্রয়োজন নেই৷ কখন dispose()
কল করতে হবে তার জন্য সর্বোত্তম অনুশীলন হল নেটিভ বিজ্ঞাপনের সাথে যুক্ত AdWidget
উইজেট ট্রি থেকে এবং AdListener.onAdFailedToLoad()
কলব্যাক থেকে সরানোর পরে।
পরবর্তী পদক্ষেপ
- আমাদের নেটিভ বিজ্ঞাপন প্লেবুকে নেটিভ বিজ্ঞাপন সম্পর্কে আরও জানুন।
- নেটিভ বিজ্ঞাপন নীতি এবং নির্দেশিকা দেখুন।
- কিছু গ্রাহকের সাফল্যের গল্প দেখুন: কেস স্টাডি 1 , কেস স্টাডি 2 ।