شروع به کار

این راهنما به شما نشان می‌دهد که چگونه از برافزای آگهی‌های بومی برای پیاده‌سازی آگهی‌های بومی AdMob در برنامه Unity استفاده کنید، و همچنین برخی نکات مهم را که باید در این مسیر درنظر بگیرید.

آگهی‌های بومی با شکل و عملکرد تجربه کاربری که در آن قرار می‌گیرند مطابقت دارند. همچنین با طراحی بصری برنامه‌ای که در آن قرار دارند مطابقت دارند. قالب آگهی‌های بومی AdMob به ناشران امکان می‌دهد آگهی‌هایی را ارائه دهند که با محتوا یکپارچه هستند. می‌توانید از این فناوری برای پیاده‌سازی پردازهای بسیار سفارشی استفاده کنید که از کد بومی در برنامه‌های Unity نهایت استفاده را می‌برند.

آگهی‌های بومی بااستفاده از همان انواع GameObjects که قبلاً با آن‌ها برنامه‌هایتان را ساخته‌اید نشان داده می‌شوند و می‌توانند به‌گونه‌ای قالب‌بندی شوند که با طراحی بصری تجربه کاربری که در آن قرار دارند مطابقت داشته باشند. وقتی آگهی بومی بار می‌شود، برنامه شما یک شیء بومی دریافت می‌کند که حاوی دارایی‌های آن است و برنامه Unity (به‌جای کیت توسعه نرم‌افزار) آن‌ها را نمایش می‌دهد.

پیش‌نیازها

بار کردن قالب‌های آگهی بومی

آگهی‌های بومی ازطریق کلاس AdLoader بارگیری می‌شوند که کلاس AdLoader.Builder خودش را دارد تا درطول ایجاد سفارشی‌سازی شود. روش ForNativeAd() AdLoader را برای مدیریت آگهی‌های بومی پیکربندی می‌کند.

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

ثبت‌نام برای رویدادهای آگهی AdLoader

برای اینکه وقتی آگهی بومی با موفقیت بار می‌شود یا بار نمی‌شود مطلع شوید، نمایندگان را به کلاس AdLoader برای رویدادهای فهرست‌شده در زیر اضافه کنید.

OnNativeAdLoaded

وقتی آگهی بومی باموفقیت بار می‌شود، فراخوانی می‌شود. برای دسترسی به آگهی بارشده، باید نماینده‌ای برای این رویداد وجود داشته باشد.

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() در اسکریپت Unity. همچنین توجه داشته باشید که دارایی‌های زیر همیشه تضمین نمی‌شود که وجود داشته باشند و باید قبل‌از نمایش بررسی شوند:

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

دارایی AdChoices

نمایش دارایی آگهی AdChoices به‌عنوان بخشی از آگهی بومی الزامی است. همچنین، مهم است که دارایی آگهی AdChoices به‌راحتی دیده شود، بنابراین رنگ‌ها و تصاویر پس‌زمینه را به‌درستی انتخاب کنید.

ثبت GameObjects برای دارایی آگهی

باید GameObject را ثبت کنید تا دارایی آگهی در برنامه Unity شما نمایش داده شود. اگر ثبت موفقیت‌آمیز باشد، روش استفاده‌شده برای ثبت GameObject، bool را برمی‌گرداند. برای List<GameObject>، این روش یک int برمی‌گرداند که نشان‌دهنده تعداد GameObject باموفقیت ثبت‌شده است.

اگر ثبت دارایی آگهی ناموفق باشد، ظهورها و کلیک‌های آگهی بومی مربوطه شناسایی نخواهد شد.

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

GameObject که برای دارایی آگهی ثبت شده است باید دارای مؤلفه Collider محدب باشد که نشان‌دهنده اندازه و شکل GameObject باشد. اگر GameObject شیء ثبت‌شده در دارایی‌های آگهی فاقد مؤلفه‌های Collider باشد یا مؤلفه به‌درستی پیکربندی نشده باشد، آگهی‌های بومی به‌درستی کار نخواهند کرد.

در تکه‌کد زیر، BoxCollider به GameObject اضافه شده است که از TextMesh برای نمایش دارایی آگهی عنوان آگهی بومی استفاده می‌کند. وقتی BoxCollider به GameObject پیوست شد، به‌طور خودکار مقیاس‌بندی می‌شود تا نوشتار مؤلفه 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;
}