شروع به کار

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

تبلیغات بومی هم از نظر شکل و هم از نظر عملکرد با تجربه کاربری که در آن قرار می‌گیرند، مطابقت دارند. آن‌ها همچنین با طراحی بصری برنامه‌ای که در آن قرار دارند، مطابقت دارند. قالب تبلیغات بومی Ad Manager به ناشران این امکان را می‌دهد تا تبلیغاتی را ارائه دهند که با محتوا یکپارچه باشند. شما می‌توانید از این فناوری برای پیاده‌سازی رندرهای بسیار سفارشی استفاده کنید که از کد بومی در برنامه‌های 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;
}

توجه داشته باشید که به فایل‌های تبلیغاتی فقط باید در thread اصلی، مثلاً از متد Update() در اسکریپت Unity، دسترسی پیدا کنید. همچنین توجه داشته باشید که فایل‌های زیر همیشه تضمین شده نیستند و باید قبل از نمایش بررسی شوند:

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

دارایی AdChoices

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

ثبت GameObjects برای دارایی تبلیغاتی

برای نمایش تبلیغ در برنامه Unity خود، باید شیء GameObject ثبت کنید. اگر ثبت موفقیت‌آمیز باشد، متدی که برای ثبت 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;
}