উন্নত নেটিভ বৈশিষ্ট্য সেট করুন

প্ল্যাটফর্ম নির্বাচন করুন: অ্যান্ড্রয়েড (বিটা) নতুন-নির্বাচিত অ্যান্ড্রয়েড আইওএস

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

পূর্বশর্ত

সম্পদ নিয়ন্ত্রণ

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

পছন্দের মিডিয়া অ্যাসপেক্ট রেশিও নিয়ন্ত্রণ

মিডিয়া অ্যাসপেক্ট রেশিও কন্ট্রোল আপনাকে বিজ্ঞাপন ক্রিয়েটিভের অ্যাসপেক্ট রেশিওর জন্য আপনার পছন্দ নির্দিষ্ট করার সুযোগ দেয়।

NativeAd.NativeMediaAspectRatio মান দিয়ে NativeAdRequest.Builder.setMediaAspectRatio() কল করুন।

  • সেট না করা থাকলে, ফেরত আসা বিজ্ঞাপনের যেকোনো মিডিয়া অ্যাসপেক্ট রেশিও থাকতে পারে।

  • সেট করা হলে, আপনি পছন্দের অ্যাস্পেক্ট রেশিওর ধরন নির্দিষ্ট করে ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারবেন।

নিম্নলিখিত উদাহরণটি SDK-কে একটি নির্দিষ্ট অ্যাস্পেক্ট রেশিও সহ রিটার্ন ইমেজ বা ভিডিওকে অগ্রাধিকার দিতে নির্দেশ দেয়।

কোটলিন

val adRequest = NativeAdRequest.Builder(
  "/21775744923/example/native",
  listOf(NativeAd.NativeAdType.NATIVE))
  .setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
  .build()

জাভা

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "/21775744923/example/native",
  List.of(NativeAd.NativeAdType.NATIVE))
  .setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
  .build();

ছবি ডাউনলোড নিয়ন্ত্রণ

ইমেজ ডাউনলোড কন্ট্রোল আপনাকে সিদ্ধান্ত নিতে দেয় যে SDK দ্বারা ইমেজ অ্যাসেট নাকি শুধুমাত্র URI ফেরত দেওয়া হবে।

NativeAdRequest.Builder.disableImageDownloading() কল করুন।

  • ইমেজ ডাউনলোড নিয়ন্ত্রণ ডিফল্টরূপে নিষ্ক্রিয় থাকে।

  • নিষ্ক্রিয় করা থাকলে, GMA Next-Gen SDK আপনার জন্য ছবি এবং URI উভয়ই পূরণ করে দেয়।

  • এটি সক্রিয় করা হলে, SDK শুধু URI-টি পূরণ করে দেয়, ফলে আপনি আপনার ইচ্ছামতো আসল ছবিগুলো ডাউনলোড করতে পারেন।

নিম্নলিখিত উদাহরণটি SDK-কে শুধুমাত্র URI ফেরত দিতে নির্দেশ দেয়।

কোটলিন

val adRequest = NativeAdRequest.Builder(
    "/21775744923/example/native",
    listOf(NativeAd.NativeAdType.NATIVE))
    .setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
    .disableImageDownloading()
    .build()

val adCallback: NativeAdLoaderCallback =
  object : NativeAdLoaderCallback {
    override fun onNativeAdLoaded(nativeAd: NativeAd) {
      // Get the image uri.
      val imageUri = nativeAd.image?.uri
    }
  };

// Load the native ad with the ad request and callback.
NativeAdLoader.load(adRequest, adLoaderCallback);

জাভা

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "/21775744923/example/native",
  List.of(NativeAd.NativeAdType.NATIVE))
  .disableImageDownloading()
  .build();

NativeAdLoaderCallback adLoaderCallback =
  new NativeAdLoaderCallback() {
    @Override
    public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
      // Get the image uri.
      Uri imageUri = nativeAd.getImage().getUri();
    }
  };

// Load the native ad with the ad request and callback.
NativeAdLoader.load(adRequest, adLoaderCallback);

ইমেজ পেলোড নিয়ন্ত্রণ

কিছু বিজ্ঞাপনে একটির পরিবর্তে একাধিক ছবি থাকে। আপনার অ্যাপটি সবগুলো ছবি নাকি শুধু একটি ছবি প্রদর্শন করতে প্রস্তুত, তা নির্দেশ করতে এই বৈশিষ্ট্যটি ব্যবহার করুন।

  • ইমেজ পেলোড নিয়ন্ত্রণ ডিফল্টরূপে নিষ্ক্রিয় থাকে।

  • এটি নিষ্ক্রিয় করা থাকলে, আপনার অ্যাপ SDK-কে নির্দেশ দেয় যেন একাধিক ছবি সম্বলিত যেকোনো অ্যাসেটের জন্য শুধু প্রথম ছবিটি সরবরাহ করা হয়।

  • এটি সক্রিয় করা হলে, আপনার অ্যাপ নির্দেশ করে যে এটি একাধিক ছবি আছে এমন যেকোনো অ্যাসেটের সমস্ত ছবি প্রদর্শন করতে প্রস্তুত।

নিম্নলিখিত উদাহরণটি SDK-কে একাধিক ইমেজ অ্যাসেট ফেরত দিতে নির্দেশ দেয়।

AdChoices প্লেসমেন্ট

এই বিভাগে AdChoices ওভারলে-এর অবস্থান নির্ধারণের পদ্ধতি বিস্তারিতভাবে বর্ণনা করা হয়েছে। আপনার কাছে এটিকে চারটি কোণার যেকোনো একটিতে স্থাপন করার অথবা একটি কাস্টম ভিউ-এর মধ্যে রেন্ডার করার বিকল্প রয়েছে।

AdChoices অবস্থান নিয়ন্ত্রণ

AdChoices পজিশন কন্ট্রোল আপনাকে বেছে নিতে দেয় যে AdChoices আইকনটি কোন কোণায় প্রদর্শিত হবে।

NativeAdRequest.AdChoicesPlacement ভ্যালুটি দিয়ে NativeAdRequest.AdChoicesPlacement NativeAdRequest.Builder.setAdChoicesPlacement() কল করুন।

  • সেট করা না থাকলে, AdChoices আইকনের অবস্থান উপরের ডানদিকে সেট করা হয়।

  • সেট করা থাকলে, AdChoices অনুরোধ অনুযায়ী নির্দিষ্ট অবস্থানে স্থাপন করা হয়।

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি কাস্টম AdChoices ছবির অবস্থান সেট করতে হয়।

কোটলিন

val adRequest = NativeAdRequest.Builder(
  "/21775744923/example/native",
  listOf(NativeAd.NativeAdType.NATIVE))
  .setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
  .build()

জাভা

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "/21775744923/example/native",
  List.of(NativeAd.NativeAdType.NATIVE))
  .setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
  .build();

AdChoices কাস্টম ভিউ

AdChoices-এর কাস্টম ভিউ ফিচারটি আপনাকে AdChoices আইকনটিকে আপনার পছন্দমতো কোনো স্থানে স্থাপন করার সুযোগ দেয়। এটি AdChoices-এর পজিশন কন্ট্রোল থেকে ভিন্ন, যা দিয়ে কেবল চারটি কোণার মধ্যে একটিকে নির্দিষ্ট করা যায়।

একটি AdChoicesView ভ্যালু দিয়ে NativeAdView.setAdChoicesView() কল করুন।

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি কাস্টম AdChoices ভিউ সেট করতে হয়, যেখানে AdChoices আইকনটি AdChoicesView ভিতরে রেন্ডার করা হয়।

কোটলিন

override fun onNativeAdLoaded(nativeAd: NativeAd) {
  val nativeAdView = NativeAdView(applicationContext)
  val adChoicesView = AdChoicesView(this)
  nativeAdView.adChoicesView = adChoicesView
}

জাভা

public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
  NativeAdView nativeAdView = new NativeAdView(getApplicationContext());
  AdChoicesView adChoicesView = new AdChoicesView(this);
  nativeAdView.setAdChoicesView(adChoicesView);
}

ভিডিও নিয়ন্ত্রণ

এই বিভাগে ভিডিও বিজ্ঞাপনের প্লেব্যাক অভিজ্ঞতা কীভাবে কাস্টমাইজ করবেন তার বিস্তারিত বর্ণনা দেওয়া হয়েছে। আপনার কাছে প্রাথমিক মিউট অবস্থা সেট করার এবং কাস্টম প্লেব্যাক নিয়ন্ত্রণ প্রয়োগ করার বিকল্প রয়েছে।

মিউট আচরণ শুরু করুন

স্টার্ট মিউটেড বিহেভিয়ার আপনাকে একটি ভিডিওর শুরুর অডিও বন্ধ বা চালু করার সুবিধা দেয়।

একটি boolean মান দিয়ে VideoOptions.Builder.setStartMuted() কল করুন এবং NativeAdOptions.Builder.setVideoOptions() কল করুন।

  • ডিফল্টরূপে স্টার্ট মিউটেড আচরণটি সক্রিয় থাকে।

  • এটি নিষ্ক্রিয় করা থাকলে, আপনার অ্যাপ ভিডিওটি অডিও দিয়ে শুরু করার অনুরোধ করে।

  • এটি চালু করা হলে, আপনার অ্যাপ অনুরোধ করে যেন ভিডিওটি অডিও মিউট করে শুরু করা হয়।

নিচের উদাহরণটিতে দেখানো হয়েছে কীভাবে অডিও আন-মিউট করে ভিডিও শুরু করতে হয়।

কোটলিন

val videoOptions = VideoOptions.Builder()
  .setStartMuted(false)
  .build()

val adRequest = NativeAdRequest.Builder(
  "/21775744923/example/native",
  listOf(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .build()

জাভা

VideoOptions videoOptions = VideoOptions.Builder()
  .setStartMuted(false)
  .build()

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "/21775744923/example/native",
  List.of(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .build()

কাস্টম প্লেব্যাক নিয়ন্ত্রণ

এর মাধ্যমে আপনি ভিডিওটি প্লে, পজ বা মিউট করার জন্য নিজস্ব ইনপুট কন্ট্রোলের অনুরোধ করতে পারবেন।

বিজ্ঞাপন শুরুর সময় মিউট অবস্থা সেট করতে, VideoOptions.Builder.setCustomControlsRequested() কল করুন।

  • কাস্টম প্লেব্যাক নিয়ন্ত্রণ ডিফল্টরূপে নিষ্ক্রিয় থাকে।

  • নিষ্ক্রিয় করা থাকলে, আপনার ভিডিওতে SDK দ্বারা রেন্ডার করা ইনপুট কন্ট্রোলগুলো দেখানো হবে।

যদি বিজ্ঞাপনে ভিডিও কন্টেন্ট থাকে এবং কাস্টম কন্ট্রোল চালু করা থাকে, তাহলে আপনার কাস্টম কন্ট্রোলগুলো বিজ্ঞাপনের সাথেই প্রদর্শন করা উচিত, কারণ বিজ্ঞাপনটি নিজে কোনো কন্ট্রোল দেখাবে না। এরপর কন্ট্রোলগুলো বিজ্ঞাপনের প্রাসঙ্গিক মেথডগুলোকে কল করতে পারবে।

VideoOptions.Builder.setCustomControlsRequested() .

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে কাস্টম প্লেব্যাক কন্ট্রোল সহ একটি ভিডিওর জন্য অনুরোধ করতে হয়।

কোটলিন

val videoOptions: VideoOptions.Builder()
  .setCustomControlsRequested(true)
  .build()

val adRequest = new NativeAdRequest.Builder(
  "/21775744923/example/native",
  listOf(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .build()

জাভা

VideoOptions VideoOptions = VideoOptions.Builder()
  .setCustomControlsRequested(true)
  .build()

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "/21775744923/example/native",
  List.of(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .build()

কাস্টম কন্ট্রোলগুলি সক্রিয় আছে কিনা তা পরীক্ষা করুন

যেহেতু অনুরোধ করার সময় এটা জানা যায় না যে ফেরত আসা বিজ্ঞাপনটিতে কাস্টম ভিডিও কন্ট্রোলের অনুমতি থাকবে কিনা, তাই আপনাকে অবশ্যই যাচাই করতে হবে যে সেটিতে কাস্টম কন্ট্রোল সক্রিয় করা আছে কিনা।

কোটলিন

  val adCallback: NativeAdLoaderCallback =
    object : NativeAdLoaderCallback {
      override fun onNativeAdLoaded(nativeAd: NativeAd) {
        val mediaContent = nativeAd.mediaContent;
        if (mediaContent != null) {
          val videoController = mediaContent.videoController;
          val canShowCustomControls = videoController?.isCustomControlsEnabled();
        }
      }
    };

জাভা

NativeAdLoaderCallback adCallback =
  new NativeAdLoaderCallback() {
    @Override
    public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
      MediaContent mediaContent = nativeAd.getMediaContent();
      if (mediaContent != null) {
        VideoController videoController = mediaContent.getVideoController();
        if (videoController != null) {
          boolean canShowCustomControls = videoController.isCustomControlsEnabled();
        }
      }
    }
  };

কাস্টম ভিডিও নিয়ন্ত্রণ রেন্ডার করুন

নিম্নলিখিত সর্বোত্তম অনুশীলনগুলি ব্যবহার করে কাস্টম ভিডিও নিয়ন্ত্রণগুলি রেন্ডার করুন:

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

কাস্টম ক্লিক অঙ্গভঙ্গি

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

NativeAd.SwipeGestureDirection এবং একটি boolean মান সহ NativeAdRequest.Builder.enableCustomClickGestureDirection() কল করুন।

নিম্নলিখিত উদাহরণটি ডানদিকে একটি কাস্টম সোয়াইপ জেসচার প্রয়োগ করে এবং সাধারণ ট্যাব আচরণ বজায় রাখে।

  • কাস্টম ক্লিক জেসচার ডিফল্টরূপে নিষ্ক্রিয় থাকে।

  • নিষ্ক্রিয় করা থাকলে, আপনার অ্যাপটি স্বাভাবিক ক্লিক আচরণ সমর্থন করবে।

  • এটি চালু করা হলে, আপনার অ্যাপ কাস্টম সোয়াইপ জেসচার সমর্থন করবে।

নিম্নলিখিত উদাহরণটি ডানদিকে একটি কাস্টম সোয়াইপ জেসচার প্রয়োগ করে এবং সাধারণ ট্যাব আচরণ বজায় রাখে।

কোটলিন

val adOptions = NativeAdOptions
  .Builder()
  .enableCustomClickGestureDirection(
    /* swipeDirection */ NativeAdOptions.SWIPE_GESTURE_DIRECTION_RIGHT,
    /* tapsAllowed= */ true)
  .build();

// The following sample ad unit ID has been enabled for custom click gestures
// and can be used for testing.
val adRequest = NativeAdRequest.Builder(
  "/21775744923/example/native",
  listOf(NativeAd.NativeAdType.NATIVE))
  .withNativeAdOptions(adOptions)
  .build();

জাভা

NativeAdOptions adOptions = new NativeAdOptions
  .Builder()
  .enableCustomClickGestureDirection(
    /* swipeDirection */ NativeAdOptions.SWIPE_GESTURE_DIRECTION_RIGHT,
    /* tapsAllowed= */ true)
  .build();

// The following sample ad unit ID has been enabled for custom click gestures
// and can be used for testing.
NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "/21775744923/example/native",
  List.of(NativeAd.NativeAdType.NATIVE))
  .withNativeAdOptions(adOptions)
  .build();

সোয়াইপ জেসচার ইভেন্টগুলির জন্য শুনুন

সোয়াইপ জেসচার ইভেন্টগুলো শোনার জন্য, একটি NativeAdEventCallback সহ NativeAd.setAdEventCallback() কল করুন এবং onAdSwipeGestureClicked() মেথডটি ইমপ্লিমেন্ট করুন।

কোটলিন

  val adCallback: NativeAdLoaderCallback =
    object : NativeAdLoaderCallback {
      override fun onNativeAdLoaded(nativeAd: NativeAd) {
        // Implement the onAdSwipeGestureClicked() method.
        val nativeAdCallback: NativeAdEventCallback = object : NativeAdEventCallback {
          override fun onAdSwipeGestureClicked() {
            // A swipe gesture click has occurred.
          }
        }
      }
    }
  // Load the native ad with the ad request and callback.
  NativeAdLoader.load(adRequest, adCallback)

জাভা

  NativeAdLoaderCallback adCallback =
    new NativeAdLoaderCallback() {
      @Override
      public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
        // Implement the onAdSwipeGestureClicked() method.
        NativeAdEventCallback nativeAdCallback = new NativeAdEventCallback() {
          @Override
          public void onAdSwipeGestureClicked() {
            // A swipe gesture click has occurred.
          }
        };
      }
    };
  // Load the native ad with the ad request and callback.
  NativeAdLoader.load(adRequest, adCallback);

মধ্যস্থতা

কাস্টম ক্লিক জেসচার শুধুমাত্র সেইসব নেটিভ অ্যাডে কাজ করে যা গুগল মোবাইল অ্যাডস এসডিকে (Google Mobile Ads SDK) দ্বারা রেন্ডার করা হয়। যেসব অ্যাড সোর্স রেন্ডারিংয়ের জন্য থার্ড-পার্টি এসডিকে (SDK) প্রয়োজন হয় , সেগুলোতে কাস্টম ক্লিক ডিরেকশন সেটিং কাজ করে না।