شروع کنید

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

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

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

پیش نیازها

بارگیری قالب های تبلیغاتی بومی

تبلیغات بومی از طریق کلاس 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;
}