সিস্টেম-সংজ্ঞায়িত নেটিভ ফরম্যাট ছাড়াও, অ্যাড ম্যানেজার প্রকাশকদের কাছে সম্পদের কাস্টম তালিকা সংজ্ঞায়িত করে তাদের নিজস্ব নেটিভ বিজ্ঞাপন ফর্ম্যাট তৈরি করার বিকল্প রয়েছে। এগুলিকে কাস্টম নেটিভ বিজ্ঞাপন ফর্ম্যাট বলা হয় এবং সংরক্ষিত বিজ্ঞাপনগুলির সাথে ব্যবহার করা যেতে পারে৷ এটি প্রকাশকদের তাদের অ্যাপে নির্বিচারে স্ট্রাকচার্ড ডেটা পাঠাতে সক্ষম করে। এই বিজ্ঞাপনগুলি NativeCustomFormatAd
অবজেক্ট দ্বারা প্রতিনিধিত্ব করা হয়।
কাস্টম নেটিভ বিজ্ঞাপন ফরম্যাট লোড করুন
এই নির্দেশিকা ব্যাখ্যা করে কিভাবে কাস্টম নেটিভ বিজ্ঞাপন ফরম্যাট লোড এবং প্রদর্শন করতে হয়।
একটি কাস্টম নেটিভ বিজ্ঞাপন লোড করুন
একটি কাস্টম নেটিভ বিজ্ঞাপন লোড করতে, নিম্নলিখিতগুলি করুন:
NativeAdType.CUSTOM_NATIVE
প্রকারকেNativeAdRequest
এ বিজ্ঞাপনের ধরন হিসেবে অন্তর্ভুক্ত করুন।কাস্টম নেটিভ বিজ্ঞাপনের ফরম্যাট আইডি সেট করুন।
কোটলিন
জাভা
কাস্টম নেটিভ বিজ্ঞাপন ফর্ম্যাট আইডি
একটি কাস্টম নেটিভ বিজ্ঞাপন ফর্ম্যাট সনাক্ত করতে ব্যবহৃত ফর্ম্যাট আইডিটি ডেলিভারি ড্রপ-ডাউনের মধ্যে নেটিভ বিভাগের অধীনে অ্যাড ম্যানেজার UI-তে পাওয়া যেতে পারে:
প্রতিটি কাস্টম নেটিভ বিজ্ঞাপন ফর্ম্যাট আইডি তার নামের পাশে প্রদর্শিত হয়। নামগুলির একটিতে ক্লিক করা আপনাকে একটি বিশদ স্ক্রিনে নিয়ে আসে যা ফর্ম্যাটের ক্ষেত্রগুলি সম্পর্কে তথ্য প্রদর্শন করে:
এখান থেকে, পৃথক ক্ষেত্র যোগ করা, সম্পাদনা করা এবং সরানো যেতে পারে। প্রতিটি সম্পদের নাম নোট করুন। আপনার কাস্টম নেটিভ বিজ্ঞাপন বিন্যাস প্রদর্শন করার সময় প্রতিটি সম্পদের ডেটা পেতে নামটি ব্যবহার করা হয়।
কাস্টম নেটিভ বিজ্ঞাপন ফরম্যাট প্রদর্শন করুন
কাস্টম নেটিভ বিজ্ঞাপন ফর্ম্যাটগুলি সিস্টেম-সংজ্ঞায়িত ফর্ম্যাটগুলির থেকে আলাদা যে প্রকাশকদের কাছে তাদের নিজস্ব সম্পদের তালিকা নির্ধারণ করার ক্ষমতা রয়েছে যা একটি বিজ্ঞাপন তৈরি করে৷ অতএব, একটি প্রদর্শনের প্রক্রিয়াটি কয়েকটি উপায়ে সিস্টেম-সংজ্ঞায়িত বিন্যাস থেকে পৃথক:
- টেক্সট এবং ইমেজ অ্যাসেট
getText()
এবংgetImage()
গেটারের মাধ্যমে পাওয়া যায় যেগুলো ফিল্ডের নামকে প্যারামিটার হিসেবে নেয়। - যেহেতু Google এর সাথে নিবন্ধন করার জন্য কোনো ডেডিকেটেড
ViewGroup
ক্লাস নেই, তাই আপনাকে ম্যানুয়ালি ইম্প্রেশন এবং ক্লিক রেকর্ড করতে হবে। - একটি কাস্টম নেটিভ বিজ্ঞাপনে একটি
null
মিডিয়া সামগ্রী থাকে যদি বিজ্ঞাপনটিতে একটি ভিডিও সম্পদ না থাকে৷
এই উদাহরণটি আপনাকে দেখায় কিভাবে একটি CustomNativeAd
প্রদর্শন করতে হয়:
কোটলিন
private fun displayCustomNativeAd(customNativeAd: CustomNativeAd, context: Context) {
// Render the text elements.
// The `customNativeAdBinding` is the layout binding for the ad container that
// contains all `CustomNativeAd` assets.
customNativeAdBinding.headline.text = customNativeAd.getText("Headline")
customNativeAdBinding.caption.text = customNativeAd.getText("Caption")
// If the main asset is an image, render it with an ImageView.
val imageView = ImageView(context)
imageView.adjustViewBounds = true
imageView.setImageDrawable(customNativeAd.getImage("MainImage")?.drawable)
imageView.setOnClickListener { customNativeAd.performClick("MainImage") }
customNativeAdBinding.mediaPlaceholder.addView(imageView)
// Render the ad choices icon.
renderAdChoices(customNativeAd)
// Record an impression.
customNativeAd.recordImpression()
}
জাভা
private void displayCustomNativeAd(CustomNativeAd customNativeAd, Context context) {
// Render the text elements.
// The `customNativeAdBinding` is the layout binding for the ad container that
// contains all `CustomNativeAd` assets.
if (customNativeAdBinding != null) {
customNativeAdBinding.headline.setText(customNativeAd.getText("Headline"));
customNativeAdBinding.caption.setText(customNativeAd.getText("Caption"));
ImageView imageView = new ImageView(context);
imageView.setAdjustViewBounds(true);
imageView.setImageDrawable(customNativeAd.getImage("MainImage").getDrawable());
imageView.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
customNativeAd.performClick("MainImage");
}
});
customNativeAdBinding.mediaPlaceholder.addView(imageView);
// Render the ad choices icon.
renderAdChoices(customNativeAd);
// Record an impression.
customNativeAd.recordImpression();
}
}
কাস্টম নেটিভ বিজ্ঞাপন ফরম্যাটের জন্য নেটিভ ভিডিও
একটি কাস্টম বিন্যাস তৈরি করার সময়, আপনার কাছে ভিডিওর জন্য বিন্যাসটিকে যোগ্য করার বিকল্প রয়েছে৷
আপনার অ্যাপ বাস্তবায়নে, আপনি মিডিয়া বিষয়বস্তু পেতে CustomNativeAd.getMediaContent()
ব্যবহার করতে পারেন। তারপর আপনার মিডিয়া ভিউতে মিডিয়া বিষয়বস্তু সেট করতে setMediaContent()
কল করুন। বিজ্ঞাপনে যদি null
মিডিয়া বিষয়বস্তু থাকে, তাহলে ভিডিও ছাড়াই বিজ্ঞাপন দেখানোর জন্য বিকল্প পরিকল্পনা করুন।
নিম্নলিখিত উদাহরণটি বিজ্ঞাপনটিতে ভিডিও সামগ্রী আছে কিনা তা পরীক্ষা করে এবং একটি ভিডিও উপলব্ধ না হলে তার জায়গায় একটি চিত্র প্রদর্শন করে:
কোটলিন
private fun displayVideoCustomNativeAd(customNativeAd: CustomNativeAd, context: Context) {
// Check whether the custom native ad has video content.
val mediaContent = customNativeAd.mediaContent
if (mediaContent != null && mediaContent.hasVideoContent) {
// Render the media content in a MediaView.
val mediaView = MediaView(context)
mediaView.mediaContent = mediaContent
customNativeAdBinding.mediaPlaceholder.addView(mediaView)
} else {
// Fall back to other assets defined on your custom native ad.
val imageView = ImageView(context)
imageView.adjustViewBounds = true
imageView.setImageDrawable(customNativeAd.getImage("MainImage")?.drawable)
customNativeAdBinding.mediaPlaceholder.addView(imageView)
}
// Record an impression.
customNativeAd.recordImpression()
}
জাভা
private void displayVideoCustomNativeAd(CustomNativeAd customNativeAd, Context context) {
// Check whether the custom native ad has video content.
MediaContent mediaContent = customNativeAd.getMediaContent();
if (mediaContent != null && mediaContent.getHasVideoContent()) {
// Render the media content in a MediaView.
MediaView mediaView = new MediaView(context);
mediaView.setMediaContent(mediaContent);
customNativeAdBinding.mediaPlaceholder.addView(mediaView);
} else {
// Fall back to other assets defined on your custom native ad.
ImageView imageView = new ImageView(context);
imageView.setAdjustViewBounds(true);
imageView.setImageDrawable(customNativeAd.getImage("MainImage").getDrawable());
customNativeAdBinding.mediaPlaceholder.addView(imageView);
}
// Record an impression.
customNativeAd.recordImpression();
}
আপনি কীভাবে একটি কাস্টম নেটিভ বিজ্ঞাপনের ভিডিও অভিজ্ঞতা কাস্টমাইজ করতে পারেন সে সম্পর্কে আরও তথ্যের জন্য ভিডিও বিজ্ঞাপন দেখুন৷
AdChoices আইকন রেন্ডার করুন
ডিজিটাল পরিষেবা আইন (DSA) সমর্থন করার অংশ হিসাবে, ইউরোপীয় অর্থনৈতিক অঞ্চলে (EEA) পরিবেশিত রিজার্ভেশন বিজ্ঞাপনগুলির জন্য একটি AdChoices আইকন এবং Google-এর এই বিজ্ঞাপন পৃষ্ঠার একটি লিঙ্ক প্রয়োজন৷ কাস্টম নেটিভ বিজ্ঞাপন প্রয়োগ করার সময়, আপনি AdChoices আইকন রেন্ডার করার জন্য দায়ী। আমরা আপনাকে প্রধান বিজ্ঞাপন সম্পদ রেন্ডার করার সময় AdChoices আইকনের জন্য রেন্ডার এবং ক্লিক লিসেনার সেট করার জন্য পদক্ষেপ নেওয়ার পরামর্শ দিই।
নিম্নলিখিত উদাহরণটি ধরে নেয় যে আপনি AdChoices লোগো ধরে রাখতে আপনার ভিউ হায়ারার্কিতে একটি <ImageView />
উপাদান সংজ্ঞায়িত করেছেন।
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:id="@+id/adChoices"
android:layout_width="15dp"
android:layout_height="15dp"
android:adjustViewBounds="true"
android:contentDescription="AdChoices icon." />
</LinearLayout>
নিম্নলিখিত উদাহরণগুলি AdChoices আইকন রেন্ডার করে এবং উপযুক্ত ক্লিক আচরণ কনফিগার করে।
কোটলিন
private fun renderAdChoices(customNativeAd: CustomNativeAd) {
// Render the AdChoices image.
val adChoiceAsset = customNativeAd.getImage(NativeAdAssetNames.ASSET_ADCHOICES_CONTAINER_VIEW)
if (adChoiceAsset != null) {
customNativeAdBinding.adchoices.setImageDrawable(adChoiceAsset.drawable)
customNativeAdBinding.adchoices.visibility = View.VISIBLE
customNativeAdBinding.adchoices.setOnClickListener {
// Handle click. See the next section for more details.
customNativeAd.performClick(NativeAdAssetNames.ASSET_ADCHOICES_CONTAINER_VIEW)
}
} else {
customNativeAdBinding.adchoices.visibility = View.GONE
}
}
জাভা
private void renderAdChoices(CustomNativeAd customNativeAd) {
// Render the AdChoices image.
Image adChoiceAsset =
customNativeAd.getImage(NativeAdAssetNames.ASSET_ADCHOICES_CONTAINER_VIEW);
if (adChoiceAsset != null) {
if (customNativeAdBinding != null) {
customNativeAdBinding.adchoices.setImageDrawable(adChoiceAsset.getDrawable());
customNativeAdBinding.adchoices.setVisibility(View.VISIBLE);
customNativeAdBinding.adchoices.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
// Handle click.
customNativeAd.performClick(NativeAdAssetNames.ASSET_ADCHOICES_CONTAINER_VIEW);
}
});
}
} else {
if (customNativeAdBinding != null) {
customNativeAdBinding.adchoices.setVisibility(View.GONE);
}
}
}
ইমপ্রেশন রেকর্ড করুন এবং ক্লিক রিপোর্ট করুন
আপনার অ্যাপ ইম্প্রেশন রেকর্ড করার জন্য এবং Google মোবাইল বিজ্ঞাপন SDK (বিটা) এ ক্লিক ইভেন্ট রিপোর্ট করার জন্য দায়ী।
ইমপ্রেশন রেকর্ড করুন
একটি কাস্টম নেটিভ বিজ্ঞাপনের জন্য একটি ইমপ্রেশন রেকর্ড করতে, বিজ্ঞাপনের recordImpression()
পদ্ধতিতে কল করুন:
কোটলিন
// Record an impression.
customNativeAd.recordImpression()
জাভা
// Record an impression.
customNativeAd.recordImpression();
যদি আপনার অ্যাপ ভুলবশত একই বিজ্ঞাপনের জন্য পদ্ধতিটিকে দুবার কল করে, তাহলে SDK স্বয়ংক্রিয়ভাবে একটি অনুরোধের জন্য একটি ডুপ্লিকেট ইম্প্রেশন রেকর্ড করা থেকে বাধা দেয়।
রিপোর্ট ক্লিক
SDK-কে রিপোর্ট করতে যে একটি অ্যাসেট ভিউতে ক্লিক হয়েছে, বিজ্ঞাপনের performClick()
পদ্ধতিতে কল করুন। অ্যাড ম্যানেজার UI-তে আপনার সংজ্ঞায়িত একই স্ট্রিং ব্যবহার করে ক্লিক করা সম্পদের নাম দিন।
কোটলিন
imageView.setOnClickListener { customNativeAd.performClick("MainImage") }
জাভা
imageView.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
customNativeAd.performClick("MainImage");
}
});
মনে রাখবেন যে আপনার বিজ্ঞাপনের সাথে যুক্ত প্রতিটি দৃশ্যের জন্য আপনাকে এই পদ্ধতিটি কল করার দরকার নেই৷ আপনার যদি "ক্যাপশন" নামে অন্য একটি ক্ষেত্র থাকে যা প্রদর্শনের উদ্দেশ্যে ছিল কিন্তু ব্যবহারকারী দ্বারা ক্লিক করা বা ট্যাপ করা হয়নি, তাহলে আপনার অ্যাপটিকে সেই সম্পদের দৃশ্যের জন্য performClick
কল করার প্রয়োজন হবে না।
কাস্টম ক্লিক কর্মের প্রতিক্রিয়া
যখন একটি কাস্টম ফর্ম্যাট বিজ্ঞাপনে একটি ক্লিক করা হয়, তখন SDK থেকে তিনটি সম্ভাব্য প্রতিক্রিয়া রয়েছে, এই ক্রমে চেষ্টা করা হয়েছে:
- একটি প্রদান করা হলে
OnCustomClickListener
আহ্বান করুন। - বিজ্ঞাপনের প্রতিটি ডিপ লিঙ্ক URL-এর জন্য, একটি বিষয়বস্তু সমাধানকারীকে খুঁজে বের করার চেষ্টা করুন এবং সমাধান করা প্রথমটি শুরু করুন।
- একটি ব্রাউজার খুলুন এবং বিজ্ঞাপনের গন্তব্য URL এ নেভিগেট করুন।
একটি কাস্টম ক্লিক ক্রিয়া বাস্তবায়ন করতে, একটি OnCustomClickListener
প্রদান করুন:
কোটলিন
customNativeAd.onCustomClickListener =
object : OnCustomClickListener {
override fun onCustomClick(assetName: String) {
// Perform your custom action.
}
}
জাভা
customNativeAd.setOnCustomClickListener(
new OnCustomClickListener() {
@Override
public void onCustomClick(@NonNull String assetName) {
// Perform your custom action.
}
});
প্রথমে, এটি অদ্ভুত বলে মনে হতে পারে যে কাস্টম ক্লিক শ্রোতারা বিদ্যমান। সর্বোপরি, আপনার অ্যাপটি SDK কে বলেছে যে একটি ক্লিক ঘটেছে, তাহলে কেন SDK ঘুরে এসে অ্যাপে রিপোর্ট করবে?
তথ্যের এই প্রবাহটি কয়েকটি কারণে কার্যকর, তবে সবচেয়ে গুরুত্বপূর্ণভাবে এটি SDK-কে ক্লিকের প্রতিক্রিয়া নিয়ন্ত্রণে রাখতে দেয়। এটি স্বয়ংক্রিয়ভাবে তৃতীয় পক্ষের ট্র্যাকিং ইউআরএলগুলিকে পিং করতে পারে যা সৃজনশীলের জন্য সেট করা হয়েছে, উদাহরণস্বরূপ, এবং কোনও অতিরিক্ত কোড ছাড়াই পর্দার পিছনে অন্যান্য কাজগুলি পরিচালনা করতে পারে৷