শুরু করুন

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

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

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

পূর্বশর্ত

স্থানীয় বিজ্ঞাপন ফরম্যাট লোড করুন

নেটিভ বিজ্ঞাপনগুলো AdLoader ক্লাসের মাধ্যমে লোড করা হয়, যেটির তৈরির সময় কাস্টমাইজ করার জন্য নিজস্ব AdLoader.Builder ক্লাস রয়েছে। ForNativeAd() মেথডটি নেটিভ বিজ্ঞাপন পরিচালনার জন্য AdLoader-কে কনফিগার করে।

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForNativeAd()
        .Build();
}

AdLoader বিজ্ঞাপন ইভেন্টগুলির জন্য নিবন্ধন করুন

কোনো নেটিভ বিজ্ঞাপন সফলভাবে লোড হলে বা লোড হতে ব্যর্থ হলে বিজ্ঞপ্তি পেতে, নিচে তালিকাভুক্ত ইভেন্টগুলোর জন্য AdLoader ক্লাসে ডেলিগেট যোগ করুন।

অননেটিভঅ্যাডলোডেড

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

OnAdFailedToLoad

যখন কোনো নেটিভ বিজ্ঞাপন লোড হতে ব্যর্থ হয় তখন এটি সক্রিয় হয়।

বিজ্ঞাপনটি লোড করুন

AdLoader তৈরি করা শেষ হলে, একটি বিজ্ঞাপনের অনুরোধ করতে এর LoadAd() মেথডটি কল করুন:

adLoader.LoadAd(new AdRequest.Builder().Build());

বিজ্ঞাপনের অনুরোধটি একসাথে করুন

নিচের কোড স্নিপেটটিতে দেখানো হয়েছে কীভাবে এমন একটি AdLoader তৈরি করতে হয়, যা নেটিভ অ্যাডের জন্য অনুরোধ করতে, সফল ও ব্যর্থ অ্যাড লোডের জন্য ডেলিগেট সেট করতে এবং একটি অ্যাড রিকোয়েস্ট পাঠাতে কনফিগার করা থাকে।

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForNativeAd()
        .Build();
    adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
    adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
    adLoader.LoadAd(new AdRequest.Builder().Build());
}

ব্যর্থ বিজ্ঞাপন লোড পরিচালনা করুন

OnAdFailedToLoad ইভেন্টটি EventHandle<AdFailedToLoadEventArgs> টাইপের। এই ইভেন্ট থেকে বিজ্ঞাপন লোড ব্যর্থতার কারণ পার্স করার পদ্ধতি নিচে দেখানো হলো।

private void RequestNativeAd() {
    ...
    adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}

private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
    Debug.Log("Native ad failed to load: " + args.Message);
}

একটি স্থানীয় বিজ্ঞাপন প্রদর্শন করুন

যখন একটি নেটিভ অ্যাড লোড হয়, তখন সংশ্লিষ্ট অ্যাড ফরম্যাটের জন্য অ্যাড ইভেন্টটি সক্রিয় হয়। এরপর আপনার অ্যাপ অ্যাডটি প্রদর্শন করার দায়িত্বে থাকে, যদিও তা সঙ্গে সঙ্গেই করতে হবে এমন কোনো বাধ্যবাধকতা নেই।

বিজ্ঞাপন লোড পরিচালনা করুন

OnNativeAdLoaded ইভেন্টটি EventHandler<NativeAdEventArgs> টাইপের। NativeAd অবজেক্টে আবদ্ধ বিজ্ঞাপনটি NativeAdEventArgs থেকে নিম্নরূপে পাওয়া যায়:

private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
}

নেটিভ বিজ্ঞাপন সম্পদ পুনরুদ্ধার করুন

বিজ্ঞাপনগুলো লোড হয়ে গেলে, নিচে দেখানো পদ্ধতিতে সেগুলোর অ্যাসেটগুলো অ্যাক্সেস করা যায়। গ্রাফিক্যাল অ্যাসেটগুলো Texture2D অবজেক্ট হিসেবে এবং টেক্সট অ্যাসেটগুলো string অবজেক্ট হিসেবে ফেরত আসে।

private bool nativeAdLoaded;
private NativeAd nativeAd;

void Update() {
    ...

    if (this.nativeAdLoaded) {
        this.nativeAdLoaded = false;
        // Get Texture2D for the icon asset of native ad.
        Texture2D iconTexture = this.nativeAd.GetIconTexture();

        // Get string for headline asset of native ad.
        string headline = this.nativeAd.GetHeadlineText();
    }
}

private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
    this.nativeAdLoaded = true;
}

মনে রাখবেন যে, বিজ্ঞাপনের অ্যাসেটগুলো শুধুমাত্র মেইন থ্রেডেই অ্যাক্সেস করা উচিত, যেমন—একটি ইউনিটি স্ক্রিপ্টের Update() মেথড থেকে। আরও মনে রাখবেন যে, নিম্নলিখিত অ্যাসেটগুলো সবসময় উপস্থিত থাকার নিশ্চয়তা নেই, এবং প্রদর্শনের আগে সেগুলো যাচাই করে নেওয়া উচিত:

  • GetStarRating()
  • GetStore()
  • GetPrice()
  • GetAdvertiser()
  • GetIconTexture()

AdChoices সম্পদ

নেটিভ অ্যাডের অংশ হিসেবে AdChoices অ্যাড অ্যাসেটটি প্রদর্শন করা আবশ্যক। এছাড়াও, AdChoices অ্যাড অ্যাসেটটি যেন সহজে দেখা যায়, তা নিশ্চিত করা জরুরি; তাই ব্যাকগ্রাউন্ডের রঙ এবং ছবি যথাযথভাবে নির্বাচন করুন।

বিজ্ঞাপন সম্পদের জন্য গেমঅবজেক্ট নিবন্ধন করুন

আপনার ইউনিটি অ্যাপে বিজ্ঞাপন অ্যাসেটটি প্রদর্শিত হওয়ার জন্য আপনাকে অবশ্যই GameObject রেজিস্টার করতে হবে। রেজিস্ট্রেশন সফল হলে, GameObject রেজিস্টার করার জন্য ব্যবহৃত মেথডটি একটি bool রিটার্ন করে। List<GameObject> এর ক্ষেত্রে, মেথডটি একটি int রিটার্ন করে যা সফলভাবে রেজিস্টার হওয়া GameObject সংখ্যা নির্দেশ করে।

কোনো বিজ্ঞাপন অ্যাসেটের নিবন্ধন অসফল হলে, সংশ্লিষ্ট নেটিভ বিজ্ঞাপনের ইম্প্রেশন এবং ক্লিকগুলো শনাক্ত করা হবে না।

if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
    // Handle failure to register the icon ad asset.
}

অ্যাড অ্যাসেটের জন্য রেজিস্টার করা GameObject অবশ্যই একটি উত্তল (convex) কোলাইডার কম্পোনেন্ট থাকতে হবে, যা GameObject আকার ও আকৃতির প্রতিনিধিত্ব করে। যদি অ্যাড অ্যাসেটে রেজিস্টার করা GameObject Collider কম্পোনেন্ট না থাকে অথবা ভুলভাবে কনফিগার করা থাকে, তাহলে নেটিভ অ্যাডগুলো সঠিকভাবে কাজ করবে না।

নিচের কোড স্নিপেটে, একটি GameObject এ একটি BoxCollider যোগ করা হয়েছে, যা একটি নেটিভ বিজ্ঞাপনের হেডলাইন অ্যাসেট প্রদর্শন করার জন্য একটি TextMesh ব্যবহার করে। GameObject এর সাথে BoxCollider টি সংযুক্ত হয়ে গেলে, এটি TextMesh কম্পোনেন্টের টেক্সটের সাথে সামঞ্জস্য রেখে স্বয়ংক্রিয়ভাবে স্কেল হয়ে যাবে।

// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;

// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;

// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();

ডেমো

নিম্নলিখিত কোডটি দেখায় কিভাবে সফলভাবে লোড হওয়া একটি নেটিভ অ্যাডের আইকন অ্যাসেট পুনরুদ্ধার করতে হয়, একটি Quad এর টেক্সচার সেট করে আইকন অ্যাড অ্যাসেটটি প্রদর্শন করতে হয়, এবং অ্যাসেটটি প্রদর্শনের জন্য ব্যবহৃত GameObject রেজিস্টার করতে হয়। অ্যাপটি যতগুলো অ্যাসেট প্রদর্শন করে, তার প্রতিটির জন্য অ্যাড অ্যাসেট পুনরুদ্ধার এবং নেটিভ অ্যাড ক্লাসের সাথে এটি রেজিস্টার করার এই প্রক্রিয়াটির পুনরাবৃত্তি করা উচিত।

private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
    ...

    if (this.nativeAdLoaded) {
        this.nativeAdLoaded = false;
        // Get Texture2D for icon asset of native ad.
        Texture2D iconTexture = this.nativeAd.GetIconTexture();

        icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
        icon.transform.position = new Vector3(1, 1, 1);
        icon.transform.localScale = new Vector3(1, 1, 1);
        icon.GetComponent<Renderer>().material.mainTexture = iconTexture;

        // Register GameObject that will display icon asset of native ad.
        if (!this.nativeAd.RegisterIconImageGameObject(icon))
        {
            // Handle failure to register ad asset.
        }
    }
}
...

private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
    this.nativeAdLoaded = true;
}