Google মোবাইল বিজ্ঞাপন SDK এছাড়াও কাস্টম অনুসন্ধান শৈলী সমর্থন করে। যদি আপনার অ্যাপ ইতিমধ্যেই Google মোবাইল বিজ্ঞাপন SDK ব্যবহার করে থাকে, তাহলে আমরা আপনাকে পরিবর্তে AFSMA SDK সংস্করণ ব্যবহার করার পরামর্শ দিই।
আপনি যদি 18.1.0 বা তার আগের সংস্করণ থেকে 19.0.0 বা তার পরবর্তী সংস্করণে আপগ্রেড করছেন, দয়া করে আমাদের মাইগ্রেশন গাইড দেখুন৷
পূর্বশর্ত
এই বাস্তবায়ন নির্দেশিকা অনুমান করে যে আপনি নিম্নলিখিতগুলির সাথে পরিচিত:
- কাস্টম অনুসন্ধান শৈলী সহ AdSense কাস্টম অনুসন্ধান বিজ্ঞাপন৷
- অ্যান্ড্রয়েড অ্যাপ ডেভেলপমেন্ট
AFS নেটিভ SDK আমদানি করুন
SDK যোগ করুন
আপনার অ্যাপে AFS নেটিভ SDK যোগ করতে, নিম্নলিখিতগুলি করুন:
আপনার অ্যাপ্লিকেশন মডিউল ডিরেক্টরির ভিতরে build.gradle
ফাইলটি খুলুন। SDK-এর সর্বশেষ সংস্করণের জন্য dependencies
অধীনে একটি নতুন বিল্ড নিয়ম যোগ করুন:
dependencies {
implementation 'com.google.android.gms:play-services-afs-native:19.1.0'
}
নিশ্চিত করুন যে আপনার শীর্ষ-স্তরের build.gradle
google()
রেপো বা maven { url "https://maven.google.com" }
-এর একটি রেফারেন্স রয়েছে।
আপনার প্রকল্পে Google Play স্ট্যান্ডঅ্যালোন সংস্করণ ম্যাচার প্লাগইন অন্তর্ভুক্ত করতে এই নির্দেশাবলী অনুসরণ করুন। এই প্লাগইনটি প্রয়োগ করার ফলে একটি গ্রেডল বিল্ড ত্রুটি দেখা দেয় যখন AFS নেটিভ SDK অ্যাপটিকে তৈরি করার অনুমতি দেওয়ার পরিবর্তে Google Play পরিষেবাগুলির একটি বেমানান সংস্করণের সাথে ব্যবহার করা হয় কিন্তু সম্ভাব্য রানটাইম ক্র্যাশের কারণ হয়৷ অথবা, আপনার প্রোজেক্টে Google Play পরিষেবার বেমানান সংস্করণ ব্যবহার করা হলে বিল্ড ত্রুটির জন্য আপনার প্রোজেক্টে failOnVersionConflict()
Resolution Strategy প্রয়োগ করুন। পরিবর্তনগুলি সংরক্ষণ করুন এবং টুলবারে গ্রেডল ফাইলগুলির সাথে সিঙ্ক প্রকল্পে ক্লিক করুন।
অ্যান্ড্রয়েড সাপোর্ট লাইব্রেরির পরিবর্তে AndroidX ব্যবহার করুন
SDK-এর 17.0.0
সংস্করণ থেকে শুরু করে, আপনার অ্যাপটিকে অবশ্যই Android সাপোর্ট লাইব্রেরির পরিবর্তে Jetpack (AndroidX) লাইব্রেরি ব্যবহার করতে হবে। সামঞ্জস্যের প্রয়োজনীয়তা:
-
com.android.tools.build:gradle
v3.2.1 বা পরবর্তীতে সেট করুন। -
compileSdkVersion
28 বা তার পরে সেট করুন। - Jetpack (AndroidX) ব্যবহার করতে আপনার অ্যাপ আপডেট করুন; AndroidX-এ মাইগ্রেট করার নির্দেশাবলী অনুসরণ করুন।
ক্লাস
আপনার অ্যাপে AFS নেটিভ বিজ্ঞাপন পরিবেশন করতে, নিম্নলিখিত ক্লাসগুলি প্রয়োগ করুন:
- এই ক্লাসটি অ্যাসিঙ্ক্রোনাসভাবে বিজ্ঞাপনের অনুরোধ, ক্যাশিং এবং বিজ্ঞাপন পুনরুদ্ধার এবং বিজ্ঞাপন রেন্ডার করার জন্য দায়ী।
- প্রতিটি বিজ্ঞাপন প্রসঙ্গে একটি পৃথক
SearchAdController
প্রয়োজন; উদাহরণস্বরূপ, যদি আপনার কাছে একটি স্ক্রীন থাকে যা অনুসন্ধান ফলাফলের তালিকার সাথে বিজ্ঞাপন দেখায় এবং অন্য একটি স্ক্রীন যা একটি নির্দিষ্ট পণ্যের বিবরণের পাশাপাশি বিজ্ঞাপন দেখায়, তাহলে আপনাকে প্রতিটি ক্ষেত্রে একটি করেSearchAdController
এর দুটি পৃথক উদাহরণ তৈরি করতে হবে। - কনস্ট্রাক্টরকে আপনার ওয়েব প্রপার্টি কোড (প্রকাশক আইডি), রিটার্ন করা বিজ্ঞাপনে প্রয়োগ করার জন্য স্টাইল আইডি এবং
SearchAdOptions
প্রদান করতে হবে। কনস্ট্রাক্টরে প্রদত্তContext
অবশ্যই সেইActivity
হতে হবে যাতেSearchAdController
থাকে এবং যেখানে আপনি বিজ্ঞাপনView
রাখবেন। - একটি নতুন ব্যবহারকারী অনুসন্ধান নির্দেশ করতে এবং একটি অ্যাসিঙ্ক্রোনাস বিজ্ঞাপন অনুরোধ শুরু করতে
loadAds
কল করুন৷ পূর্ববর্তী কল থেকে লোড করা বিজ্ঞাপনগুলি যখন একটি নতুন কল করা হয় তখন অভ্যন্তরীণ বিজ্ঞাপন ক্যাশে থেকেloadAds
করা হয়৷ - বিজ্ঞাপন ক্রিয়েটিভ প্রদর্শন করতে
createAdView
দিয়ে একটিView
তৈরি করুন। - একবার বিজ্ঞাপনগুলি লোড হয়ে গেলে, সেই
View
একটি ক্যাশ করা বিজ্ঞাপন রেন্ডার করার জন্যcreateAdView
এর সাথে পূর্বে তৈরি করা একটিView
সহpopulateAdView
কল করুন৷ যেView
পপুলেট করা হবে তা ছাড়াও, একটিadKey
প্রদান করুন, বিজ্ঞাপনটিকে স্বতন্ত্রভাবে সনাক্ত করার জন্য একটি নির্বিচারী স্ট্রিং। এটি সেইadKey
এর সাথে ক্যাশে থেকে ফিরে আসা নির্দিষ্ট বিজ্ঞাপন ক্রিয়েটিভকে যুক্ত করে, তাই যখন একইadKey
populateAdView
-তে ভবিষ্যতের কলে পাস করা হয়, তখন একই বিজ্ঞাপন ফেরত দেওয়া হবে। উদাহরণস্বরূপ, যদিpopulateAdView
প্রথমবারadKey="keyA"
দিয়ে ডাকা হয় এবং হাইকিং বুটের জন্য একটি বিজ্ঞাপন রেন্ডার করা হয়, তাহলে প্রতিটি পরবর্তী কলadKey="keyA"
দিয়েpopulateAdView
এ হাইকিং বুটের জন্য একই বিজ্ঞাপন তৈরি করবে। (loadAds
-এ একটি নতুন কল করা সমস্ত ক্যাশে করা বিজ্ঞাপন এবং সংশ্লিষ্ট বিজ্ঞাপন কীগুলিকে সাফ করে।)
- বিজ্ঞাপনগুলি কীভাবে অনুরোধ করা হয় এবং প্রদর্শিত হয় তা কাস্টমাইজ করতে
SearchAdController
কনস্ট্রাক্টরের কাছে এই বস্তুটি প্রেরণ করুন৷ একটিSearchAdOptions
অবজেক্ট তৈরি করতে একটিSearchAdOptions.Builder
এbuild()
কল করুন।
View
-
SearchAdController
এcreateAdView()
কল করে বিজ্ঞাপন ধরে রাখতে একটিView
অবজেক্ট তৈরি করুন। এক সময়ে সর্বাধিক একটি বিজ্ঞাপন প্রদর্শন করে, তবে একইView
সময়ের সাথে বিভিন্ন বিজ্ঞাপন প্রদর্শনের জন্য পুনর্ব্যবহার করা যেতে পারে।
- একটি অ্যাসিঙ্ক্রোনাস বিজ্ঞাপন অনুরোধ শুরু করতে
SearchAdRequest
সহSearchAdController
এloadAds
পদ্ধতিতে কল করুন। একটিSearchAdRequest
অবজেক্ট তৈরি করতে একটিSearchAdRequest.Builder
এbuild()
কল করুন।
- এই ইন্টারফেসটি প্রয়োগ করুন এবং বিভিন্ন রাজ্যের জন্য কলব্যাক নিবন্ধন করতে
SearchAdController
কনস্ট্রাক্টরের কাছে পাস করুন। - দ্রষ্টব্য:
AdListener
কলব্যাকগুলি একটি বাতিল অনুরোধে কল করা হবে না (loadAds
এ একটি কল যা প্রথম কলের সমাধান হওয়ার আগেloadAds
এ অন্য একটি কল দ্বারা প্রিমম্প করা হয়েছিল)৷
উদাহরণ বাস্তবায়ন
নীচের উদাহরণটি একটি নমুনা Activity
একটি SearchAdController
তৈরি করা দেখায়।
// MainActivity.java implementation
// (MainActivity is a subclass of Activity)
SearchAdController adController;
// adContainer where we will place our ads in this example.
ViewGroup adContainer;
protected void onCreate(Bundle bundle){
super.onCreate(bundle);
adContainer = (ViewGroup) findViewById(...);
// Specify ad options (not required).
SearchAdOptions.Builder adOptionsBuilder = new SearchAdOptions.Builder();
adOptionsBuilder.setAdType(SearchAdOptions.AD_TYPE_TEXT);
adOptionsBuilder.setPrefetch(true);
adOptionsBuilder.setNumAdsRequested(3);
// Provide a callback to trigger when ads are loaded.
AdListener adListener = new AdListener() {
public void onAdLoaded() {
createAndShowAd();
}
};
// Instantiate the SearchAdController.
adController = new SearchAdController(this, "your-client-id", "your-style-id",
adOptionsBuilder.build(), adListener);
}
যখন ব্যবহারকারী একটি ক্যোয়ারী শুরু করেন, তখন একটি SearchAdRequest
তৈরি করুন এবং একটি অ্যাসিঙ্ক্রোনাস বিজ্ঞাপন অনুরোধ শুরু করতে SearchAdController
এ loadAds
কল করুন৷
// Create the request.
SearchAdRequest.Builder requestBuilder = new SearchAdRequest.Builder();
requestBuilder.setQuery("user query here");
// Load the ads.
adController.loadAds(requestBuilder.build());
একটি বিজ্ঞাপন দৃশ্যে একটি লোড করা বিজ্ঞাপন পূরণ করতে আপনার onAdLoaded
কলব্যাক প্রয়োগ করুন৷
private void createAndShowAd() {
// Create a new view that will contain the ad.
View adView = adController.createAdView();
// Attach the new view to the view hierarchy.
adContainer.addView(adView);
// Display the ad inside the adView. We need to provide an adKey to
// indicate which ad is to be displayed in the adView. In this example,
// since we only have one ad, we can provide any constant string. However,
// if you intend to display multiple ads, each ad you wish to display
// should be given a unique adKey of your choosing.
adController.populateAdView(adView, "demoAd");
}
প্রদত্ত প্রশ্নের সাথে সম্পর্কিত একটি বিজ্ঞাপন এখন adView
প্রদর্শিত হবে।
তদন্ত ত্রুটি
SearchAdController
onAdLoaded()
পদ্ধতি সহ একটি AdListener
অবজেক্ট প্রয়োজন যাতে আপনার অ্যাপটি বিজ্ঞাপনগুলি প্রদর্শনের জন্য প্রস্তুত হয় তা জানানোর জন্য। আপনার onAdFailedToLoad()
পদ্ধতিটিও প্রয়োগ করা উচিত যাতে আপনি ত্রুটি সনাক্ত করতে এবং সংশোধন করতে পারেন। উদাহরণস্বরূপ, আপনি আপনার বাস্তবায়ন ডিবাগ করতে নিম্নলিখিত AdListener
ব্যবহার করতে পারেন:
AdListener adListener = new AdListener() {
public void onAdLoaded() {
// Called when an ad is loaded.
Toast.makeText(MainActivity.this, "Ad Loaded",
Toast.LENGTH_SHORT).show();
Log.d(MainActivity.class.getSimpleName(), "Ad Loaded");
}
public void onAdLeftApplication() {
// Called when an ad leaves the application
// (to go to the browser for example).
Toast.makeText(MainActivity.this, "Ad Left Application",
Toast.LENGTH_SHORT).show();
Log.d(MainActivity.class.getSimpleName(), "Ad Left Application");
}
@Override
public void onAdFailedToLoad(int errorCode) {
// Called when an ad request failed.
Toast.makeText(MainActivity.this, "Ad Failed to Load: " + errorCode,
Toast.LENGTH_SHORT).show();
Log.e(MainActivity.class.getSimpleName(), "Ad Failed to Load: " +
errorCode);
}
};
onAdFailedToLoad()
কলব্যাক পদ্ধতিতে ব্যবহৃত ধ্রুবকগুলি AdListener- এ সংজ্ঞায়িত করা হয়েছে।