Android এর জন্য AFS নেটিভ ইমপ্লিমেন্টেশন

Google মোবাইল বিজ্ঞাপন SDK এছাড়াও কাস্টম অনুসন্ধান শৈলী সমর্থন করে। যদি আপনার অ্যাপ ইতিমধ্যেই Google মোবাইল বিজ্ঞাপন SDK ব্যবহার করে থাকে, তাহলে আমরা আপনাকে পরিবর্তে AFSMA SDK সংস্করণ ব্যবহার করার পরামর্শ দিই।

আপনি যদি 18.1.0 বা তার আগের সংস্করণ থেকে 19.0.0 বা তার পরবর্তী সংস্করণে আপগ্রেড করছেন, দয়া করে আমাদের মাইগ্রেশন গাইড দেখুন৷

পূর্বশর্ত

এই বাস্তবায়ন নির্দেশিকা অনুমান করে যে আপনি নিম্নলিখিতগুলির সাথে পরিচিত:

AFS নেটিভ SDK আমদানি করুন

SDK যোগ করুন

আপনার অ্যাপে AFS নেটিভ SDK যোগ করতে, নিম্নলিখিতগুলি করুন:

আপনার অ্যাপ্লিকেশন মডিউল ডিরেক্টরির ভিতরে build.gradle ফাইলটি খুলুন। SDK-এর সর্বশেষ সংস্করণের জন্য dependencies অধীনে একটি নতুন বিল্ড নিয়ম যোগ করুন:

dependencies {
  implementation 'com.google.android.gms:play-services-afs-native:19.0.3'
}

নিশ্চিত করুন যে আপনার শীর্ষ-স্তরের 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 প্রয়োজন; উদাহরণস্বরূপ, যদি আপনার কাছে একটি স্ক্রীন থাকে যা অনুসন্ধান ফলাফলের তালিকার সাথে বিজ্ঞাপন দেখায় এবং অন্য একটি স্ক্রীন যা একটি নির্দিষ্ট পণ্যের বিবরণের পাশাপাশি বিজ্ঞাপন দেখায়, তাহলে আপনাকে প্রতিটি ক্ষেত্রে একটি করে 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 -এ একটি নতুন কল করা সমস্ত ক্যাশে করা বিজ্ঞাপন এবং সংশ্লিষ্ট বিজ্ঞাপন কীগুলিকে সাফ করে।)

SearchAdOptions

  • বিজ্ঞাপনগুলি কীভাবে অনুরোধ করা হয় এবং প্রদর্শিত হয় তা কাস্টমাইজ করতে SearchAdController কনস্ট্রাক্টরের কাছে এই বস্তুটি প্রেরণ করুন৷ একটি SearchAdOptions অবজেক্ট তৈরি করতে একটি SearchAdOptions.Builderbuild() কল করুন।

View

  • SearchAdControllercreateAdView() কল করে বিজ্ঞাপন ধরে রাখতে একটি View অবজেক্ট তৈরি করুন। এক সময়ে সর্বাধিক একটি বিজ্ঞাপন প্রদর্শন করে, তবে একই View সময়ের সাথে বিভিন্ন বিজ্ঞাপন প্রদর্শনের জন্য পুনর্ব্যবহার করা যেতে পারে।

SearchAdRequest

  • একটি অ্যাসিঙ্ক্রোনাস বিজ্ঞাপন অনুরোধ শুরু করতে SearchAdRequest সহ SearchAdControllerloadAds পদ্ধতিতে কল করুন। একটি SearchAdRequest অবজেক্ট তৈরি করতে একটি SearchAdRequest.Builderbuild() কল করুন।

AdListener

  • এই ইন্টারফেসটি প্রয়োগ করুন এবং বিভিন্ন রাজ্যের জন্য কলব্যাক নিবন্ধন করতে 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 তৈরি করুন এবং একটি অ্যাসিঙ্ক্রোনাস বিজ্ঞাপন অনুরোধ শুরু করতে SearchAdControllerloadAds কল করুন৷

// 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- এ সংজ্ঞায়িত করা হয়েছে।