নেটিভ উন্নত

একটি নেটিভ বিজ্ঞাপন প্রদর্শন করুন

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

NativeAdView ক্লাস

NativeAd ফর্ম্যাটের জন্য, সংশ্লিষ্ট NativeAdView ক্লাস আছে। এই ক্লাসটি হল একটি ViewGroup যা প্রকাশকদের NativeAd এর রুট হিসাবে ব্যবহার করা উচিত। একটি একক NativeAdView একটি একক নেটিভ বিজ্ঞাপনের সাথে মিলে যায়৷ সেই বিজ্ঞাপনের সম্পদ (যে ImageView স্ক্রিনশট সম্পদ প্রদর্শন করে, উদাহরণস্বরূপ) প্রদর্শন করতে ব্যবহৃত প্রতিটি ভিউ NativeAdView অবজেক্টের একটি শিশু হওয়া উচিত।

একটি নেটিভ বিজ্ঞাপনের ভিউ শ্রেণীবিন্যাস যা একটি LinearLayout ব্যবহার করে তার সম্পদের দৃশ্যগুলি এইরকম দেখতে পারে:

<com.google.android.gms.ads.nativead.NativeAdView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout
    android:orientation="vertical">
        <LinearLayout
        android:orientation="horizontal">
          <ImageView
           android:id="@+id/ad_app_icon" />
          <TextView
            android:id="@+id/ad_headline" />
         </LinearLayout>
         <!--Add remaining assets such as the image and media view.-->
    </LinearLayout>
</com.google.android.gms.ads.nativead.NativeAdView>

এখানে একটি উদাহরণ যা একটি NativeAdView তৈরি করে এবং এটি একটি NativeAd দিয়ে পপুলেট করে:

জাভা

AdLoader.Builder builder = new AdLoader.Builder(this, "/21775744923/example/native")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
        @Override
        public void onNativeAdLoaded(NativeAd nativeAd) {
            // Assumes you have a placeholder FrameLayout in your View layout
            // (with ID fl_adplaceholder) where the ad is to be placed.
            FrameLayout frameLayout =
                findViewById(R.id.fl_adplaceholder);
            // Assumes that your ad layout is in a file call native_ad_layout.xml
            // in the res/layout folder
            NativeAdView adView = (NativeAdView) getLayoutInflater()
                .inflate(R.layout.native_ad_layout, null);
            // This method sets the assets into the ad view.
            populateNativeAdView(nativeAd, adView);
            frameLayout.removeAllViews();
            frameLayout.addView(adView);
        }
});

কোটলিন

val builder = AdLoader.Builder(this, "/21775744923/example/native")
    .forNativeAd { nativeAd ->
        // Assumes you have a placeholder FrameLayout in your View layout
        // (with ID fl_adplaceholder) where the ad is to be placed.
        val frameLayout: FrameLayout = findViewById(R.id.fl_adplaceholder)
        // Assumes that your ad layout is in a file call native_ad_layout.xml
        // in the res/layout folder
        val adView = layoutInflater
                .inflate(R.layout.native_ad_layout, null) as NativeAdView
        // This method sets the assets into the ad view.
        populateNativeAdView(nativeAd, adView)
        frameLayout.removeAllViews()
        frameLayout.addView(adView)
    }

মনে রাখবেন যে একটি প্রদত্ত নেটিভ বিজ্ঞাপনের সমস্ত সম্পদ NativeAdView লেআউটের মধ্যে রেন্ডার করা উচিত। Google মোবাইল বিজ্ঞাপন SDK একটি সতর্কতা লগ করার চেষ্টা করে যখন নেটিভ অ্যাসেটগুলি নেটিভ অ্যাড ভিউ লেআউটের বাইরে রেন্ডার করা হয়।

বিজ্ঞাপন ভিউ ক্লাসগুলি প্রতিটি পৃথক সম্পত্তির জন্য ব্যবহৃত ভিউ নিবন্ধন করার জন্য ব্যবহৃত পদ্ধতি এবং একটি NativeAd অবজেক্ট নিজেই নিবন্ধন করার জন্য ব্যবহার করা হয়। এইভাবে ভিউ নিবন্ধন করলে SDK স্বয়ংক্রিয়ভাবে কাজগুলি পরিচালনা করতে দেয় যেমন:

  • রেকর্ডিং ক্লিক
  • স্ক্রিনে প্রথম পিক্সেল দৃশ্যমান হলে ইম্প্রেশন রেকর্ড করা
  • নেটিভ ব্যাকফিল ক্রিয়েটিভের জন্য AdChoices ওভারলে প্রদর্শন করা হচ্ছে—বর্তমানে প্রকাশকদের একটি নির্বাচিত গোষ্ঠীর মধ্যে সীমাবদ্ধ

AdChoices ওভারলে

একটি AdChoices ওভারলে SDK দ্বারা একটি বিজ্ঞাপন দৃশ্য হিসাবে যোগ করা হয় যখন একটি ব্যাকফিল বিজ্ঞাপন ফেরত দেওয়া হয়। যদি আপনার অ্যাপ নেটিভ বিজ্ঞাপন ব্যাকফিল ব্যবহার করে, তাহলে স্বয়ংক্রিয়ভাবে সন্নিবেশিত AdChoices লোগোর জন্য আপনার নেটিভ বিজ্ঞাপন ভিউয়ের পছন্দের কোণে জায়গা ছেড়ে দিন। এছাড়াও, এটি গুরুত্বপূর্ণ যে AdChoices ওভারলে দেখা যায়, তাই সঠিকভাবে ব্যাকগ্রাউন্ডের রং এবং ছবি বেছে নিন। ওভারলে এর চেহারা এবং ফাংশন সম্পর্কে আরও তথ্যের জন্য, প্রোগ্রামেটিক নেটিভ বিজ্ঞাপন বাস্তবায়ন নির্দেশিকা পড়ুন।

প্রোগ্রামেটিক নেটিভ বিজ্ঞাপনের জন্য বিজ্ঞাপন অ্যাট্রিবিউশন

প্রোগ্রামেটিক নেটিভ বিজ্ঞাপনগুলি প্রদর্শন করার সময়, আপনাকে অবশ্যই একটি বিজ্ঞাপন অ্যাট্রিবিউশন প্রদর্শন করতে হবে যাতে বোঝা যায় যে দৃশ্যটি একটি বিজ্ঞাপন। আমাদের নীতি নির্দেশিকা আরো জানুন.

কোড উদাহরণ

একটি নেটিভ বিজ্ঞাপন প্রদর্শনের জন্য এই ধাপগুলি হল:

  1. NativeAdView ক্লাসের একটি উদাহরণ তৈরি করুন।
  2. প্রতিটি বিজ্ঞাপন সম্পদ প্রদর্শনের জন্য:

    1. বিজ্ঞাপন অবজেক্টে সম্পদের সাথে সম্পদের দৃশ্য পূরণ করুন।
    2. NativeAdView ক্লাসের সাথে সম্পদ দৃশ্য নিবন্ধন করুন।
  3. আপনার নেটিভ বিজ্ঞাপন লেআউটে একটি বড় মিডিয়া সম্পদ অন্তর্ভুক্ত থাকলে MediaView নিবন্ধন করুন।

  4. NativeAdView ক্লাসের সাথে বিজ্ঞাপন বস্তুটি নিবন্ধন করুন।

এখানে একটি উদাহরণ ফাংশন যা একটি NativeAd প্রদর্শন করে:

জাভা

private void displayNativeAd(ViewGroup parent, NativeAd ad) {

  // Inflate a layout and add it to the parent ViewGroup.
  LayoutInflater inflater = (LayoutInflater) parent.getContext()
          .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  NativeAdView adView = (NativeAdView) inflater
          .inflate(R.layout.ad_layout_file, parent);

  // Locate the view that will hold the headline, set its text, and call the
  // NativeAdView's setHeadlineView method to register it.
  TextView headlineView = adView.findViewById<TextView>(R.id.ad_headline);
  headlineView.setText(ad.getHeadline());
  adView.setHeadlineView(headlineView);

  // Repeat the process for the other assets in the NativeAd
  // using additional view objects (Buttons, ImageViews, etc).

  // If the app is using a MediaView, it should be
  // instantiated and passed to setMediaView. This view is a little different
  // in that the asset is populated automatically, so there's one less step.
  MediaView mediaView = (MediaView) adView.findViewById(R.id.ad_media);
  adView.setMediaView(mediaView);

  // Call the NativeAdView's setNativeAd method to register the
  // NativeAdObject.
  adView.setNativeAd(ad);

  // Ensure that the parent view doesn't already contain an ad view.
  parent.removeAllViews();

  // Place the AdView into the parent.
  parent.addView(adView);
}

কোটলিন

fun displayNativeAd(parent: ViewGroup, ad: NativeAd) {

  // Inflate a layout and add it to the parent ViewGroup.
  val inflater = parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)
          as LayoutInflater
  val adView = inflater.inflate(R.layout.ad_layout_file, parent) as NativeAdView

  // Locate the view that will hold the headline, set its text, and use the
  // NativeAdView's headlineView property to register it.
  val headlineView = adView.findViewById<TextView>(R.id.ad_headline)
  headlineView.text = ad.headline
  adView.headlineView = headlineView

  // Repeat the process for the other assets in the NativeAd using
  // additional view objects (Buttons, ImageViews, etc).

  val mediaView = adView.findViewById<MediaView>(R.id.ad_media)
  adView.mediaView = mediaView

  // Call the NativeAdView's setNativeAd method to register the
  // NativeAdObject.
  adView.setNativeAd(ad)

  // Ensure that the parent view doesn't already contain an ad view.
  parent.removeAllViews()

  // Place the AdView into the parent.
  parent.addView(adView)
}

এখানে স্বতন্ত্র কাজগুলি রয়েছে:

  1. লেআউট স্ফীত

    জাভা

    LayoutInflater inflater = (LayoutInflater) parent.getContext()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    NativeAdView adView = (NativeAdView) inflater
            .inflate(R.layout.ad_layout_file, parent);
    

    কোটলিন

    val inflater = parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)
            as LayoutInflater
    val adView = inflater.inflate(R.layout.ad_layout_file, parent) as NativeAdView
    

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

  2. সম্পদ ভিউ পপুলেট এবং রেজিস্টার করুন

    এই নমুনা কোডটি শিরোনাম প্রদর্শনের জন্য ব্যবহৃত ভিউ সনাক্ত করে, বিজ্ঞাপন অবজেক্ট দ্বারা প্রদত্ত স্ট্রিং সম্পদ ব্যবহার করে এর পাঠ্য সেট করে এবং NativeAdView অবজেক্টের সাথে এটি নিবন্ধন করে:

    জাভা

    TextView headlineView = adView.findViewById<TextView>(R.id.ad_headline);
    headlineView.setText(ad.getHeadline());
    adView.setHeadlineView(headlineView);
    

    কোটলিন

    val headlineView = adView.findViewById<TextView>(R.id.ad_headline)
    headlineView.text = ad.headline
    adView.headlineView = headlineView
    

    ভিউ লোকেটিং, এর মান সেট করা এবং অ্যাড ভিউ ক্লাসের সাথে রেজিস্টার করার এই প্রক্রিয়াটি নেটিভ অ্যাড অবজেক্টের দ্বারা প্রদত্ত প্রতিটি অ্যাসেটের জন্য পুনরাবৃত্তি করা উচিত যা অ্যাপটি প্রদর্শন করবে।

  3. ক্লিক হ্যান্ডেল

    নেটিভ অ্যাড ভিউয়ের উপর বা এর মধ্যে কোনও ভিউতে কোনও কাস্টম ক্লিক হ্যান্ডলার প্রয়োগ করবেন না। বিজ্ঞাপন ভিউ সম্পদের উপর ক্লিকগুলি SDK দ্বারা পরিচালিত হয় যতক্ষণ না আপনি সঠিকভাবে সম্পদের ভিউ পূরণ এবং নিবন্ধন করেন, যেমনটি পূর্ববর্তী বিভাগে আলোচনা করা হয়েছে।

    ক্লিকগুলি শুনতে, Google মোবাইল বিজ্ঞাপন SDK ক্লিক কলব্যাক প্রয়োগ করুন:

    জাভা

    AdLoader adLoader = new AdLoader.Builder(context, "/21775744923/example/native")
        // ...
        .withAdListener(new AdListener() {
            @Override
            public void onAdFailedToLoad(LoadAdError adError) {
                // Handle the failure by logging.
            }
            @Override
            public void onAdClicked() {
                // Log the click event or other custom behavior.
            }
        })
        .build();
    

    কোটলিন

    val adLoader = AdLoader.Builder(this, "/21775744923/example/native")
        // ...
        .withAdListener(object : AdListener() {
            override fun onAdFailedToLoad(adError: LoadAdError) {
                // Handle the failure.
            }
            override fun onAdClicked() {
                // Log the click event or other custom behavior.
            }
        })
        .build()
    
  4. মিডিয়াভিউ নিবন্ধন করুন

    আপনি যদি আপনার নেটিভ বিজ্ঞাপনের লেআউটে একটি প্রধান চিত্র সম্পদ অন্তর্ভুক্ত করতে চান তবে আপনাকে ImageView সম্পদের পরিবর্তে MediaView সম্পদ ব্যবহার করতে হবে।

    MediaView হল একটি বিশেষ View যা প্রধান মিডিয়া সম্পদ, ভিডিও বা ছবি প্রদর্শন করার জন্য ডিজাইন করা হয়েছে।

    MediaView একটি XML বিন্যাসে সংজ্ঞায়িত করা যেতে পারে বা গতিশীলভাবে তৈরি করা যেতে পারে। এটি একটি NativeAdView এর ভিউ হায়ারার্কির মধ্যে স্থাপন করা উচিত, ঠিক অন্য যেকোন অ্যাসেট ভিউয়ের মতো। একটি MediaView ব্যবহার করে অ্যাপগুলি অবশ্যই NativeAdView এর সাথে নিবন্ধন করতে হবে:

    জাভা

     // Populate and register the media asset view.
     nativeAdView.setMediaView(nativeAdBinding.adMedia);
    

    কোটলিন

     // Populate and register the media asset view.
     nativeAdView.mediaView = nativeAdBinding.adMedia
    

    ইমেজস্কেল টাইপ

    ছবি প্রদর্শন করার সময় MediaView ক্লাসে একটি ImageScaleType বৈশিষ্ট্য রয়েছে। আপনি যদি MediaView একটি চিত্রকে কীভাবে স্কেল করা হয় তা পরিবর্তন করতে চান, MediaView এর setImageScaleType() পদ্ধতি ব্যবহার করে সংশ্লিষ্ট ImageView.ScaleType সেট করুন:

    জাভা

    mediaView.setImageScaleType(ImageView.ScaleType.CENTER_CROP);
    

    কোটলিন

    mediaView.imageScaleType = ImageView.ScaleType.CENTER_CROP
    

    মিডিয়া কন্টেন্ট

    MediaContent ক্লাস নেটিভ বিজ্ঞাপনের মিডিয়া বিষয়বস্তুর সাথে সম্পর্কিত ডেটা ধারণ করে, যা MediaView ক্লাস ব্যবহার করে প্রদর্শিত হয়। যখন MediaView mediaContent সম্পত্তি একটি MediaContent উদাহরণের সাথে সেট করা হয়:

    • যদি একটি ভিডিও সম্পদ উপলব্ধ থাকে, এটি বাফার করা হয় এবং MediaView ভিতরে বাজানো শুরু করে। আপনি hasVideoContent() চেক করে একটি ভিডিও সম্পদ উপলব্ধ কিনা তা বলতে পারেন৷

    • যদি বিজ্ঞাপনটিতে একটি ভিডিও সম্পদ না থাকে, mainImage সম্পদ ডাউনলোড করা হয় এবং পরিবর্তে MediaView ভিতরে রাখা হয়।

    ডিফল্টরূপে, mainImage হল প্রথম ডাউনলোড করা ছবি সম্পদ। যদি setReturnUrlsForImageAssets(true) ব্যবহার করা হয়, mainImage null থাকে এবং আপনাকে অবশ্যই আপনার ম্যানুয়ালি ডাউনলোড করা ছবিতে mainImage প্রপার্টি সেট করতে হবে। মনে রাখবেন যে এই ছবিটি শুধুমাত্র তখনই ব্যবহার করা হবে যখন কোনো ভিডিও সম্পদ উপলব্ধ না থাকে।

  5. নেটিভ বিজ্ঞাপন অবজেক্ট নিবন্ধন করুন

    এই চূড়ান্ত ধাপটি নেটিভ বিজ্ঞাপন অবজেক্টটিকে দেখানোর জন্য দায়ী দৃশ্যের সাথে নিবন্ধিত করে।

    জাভা

    adView.setNativeAd(ad);
    

    কোটলিন

    adView.setNativeAd(ad)
    

বিজ্ঞাপন ধ্বংস

যখন আপনি আপনার নেটিভ বিজ্ঞাপনটি দেখানো শেষ করেন, তখন আপনাকে এটি ধ্বংস করতে হবে যাতে বিজ্ঞাপনটি সঠিকভাবে আবর্জনা সংগ্রহ করা হয়।

জাভা

nativeAd.destroy();

কোটলিন

nativeAd.destroy()

নেটিভ বিজ্ঞাপন কোড পরীক্ষা করুন

সরাসরি বিক্রি বিজ্ঞাপন

আপনি যদি সরাসরি-বিক্রীত নেটিভ বিজ্ঞাপনগুলি কেমন তা পরীক্ষা করতে চান, আপনি এই অ্যাড ম্যানেজার বিজ্ঞাপন ইউনিট আইডি ব্যবহার করতে পারেন:

/21775744923/example/native

এটি নমুনা অ্যাপ ইনস্টল এবং বিষয়বস্তু বিজ্ঞাপনের পাশাপাশি নিম্নলিখিত সম্পদগুলির সাথে একটি কাস্টম নেটিভ বিজ্ঞাপন বিন্যাস পরিবেশনের জন্য কনফিগার করা হয়েছে:

  • শিরোনাম (পাঠ্য)
  • মূল ছবি (ছবি)
  • ক্যাপশন (পাঠ্য)

কাস্টম নেটিভ বিজ্ঞাপন ফরম্যাটের টেমপ্লেট আইডি হল 10063170

নেটিভ ব্যাকফিল বিজ্ঞাপন

Ad Exchange ব্যাকফিল প্রকাশকদের একটি নির্বাচিত গোষ্ঠীর মধ্যে সীমাবদ্ধ৷ নেটিভ ব্যাকফিল বিজ্ঞাপনের আচরণ পরীক্ষা করতে, এই অ্যাড ম্যানেজার বিজ্ঞাপন ইউনিট ব্যবহার করুন:

/21775744923/example/native-backfill

এটি নমুনা অ্যাপ ইনস্টল এবং বিষয়বস্তু বিজ্ঞাপন পরিবেশন করে যা AdChoices ওভারলে অন্তর্ভুক্ত করে।

লাইভ হওয়ার আগে আপনার আসল বিজ্ঞাপন ইউনিট এবং টেমপ্লেট আইডি উল্লেখ করতে আপনার কোড আপডেট করতে ভুলবেন না।

গিটহাবের উদাহরণ

নেটিভ বিজ্ঞাপনের সম্পূর্ণ প্রয়োগের উদাহরণ:

জাভা কোটলিন

পরবর্তী পদক্ষেপ

নিম্নলিখিত বিষয়গুলি অন্বেষণ করুন: