گزینه های تبلیغات بومی

پلتفرم مورد نظر را انتخاب کنید: اندروید، iOS

تبلیغات بومی ویژگی‌های پیشرفته‌ی زیادی دارند که به شما امکان می‌دهد سفارشی‌سازی‌های بیشتری انجام دهید و بهترین تجربه‌ی تبلیغاتی ممکن را ایجاد کنید. این راهنما به شما نشان می‌دهد که چگونه از ویژگی‌های پیشرفته‌ی تبلیغات بومی استفاده کنید.

پیش‌نیازها

کنترل دارایی‌ها

این بخش جزئیات نحوه سفارشی‌سازی محتوای خلاقانه در تبلیغات بومی شما را شرح می‌دهد. شما می‌توانید نسبت ابعاد دلخواه را برای محتوای رسانه‌ای و نحوه دانلود و نمایش محتوای تصویری مشخص کنید.

کنترل‌های نسبت ابعاد رسانه ترجیحی

کنترل‌های نسبت ابعاد رسانه به شما امکان می‌دهند اولویتی را برای نسبت ابعاد تبلیغات مشخص کنید.

تابع NativeAdOptions.Builder.setMediaAspectRatio() را با مقدار NativeAdOptions.MediaAspectRatio فراخوانی کنید.

  • وقتی تنظیم نشده باشد، تبلیغ برگردانده شده می‌تواند هر نسبت ابعاد رسانه‌ای داشته باشد.

  • وقتی این تنظیم شد، می‌توانید با مشخص کردن نوع نسبت تصویر دلخواه، تجربه کاربری را بهبود بخشید.

مثال زیر به SDK دستور می‌دهد که تصویر یا ویدیوی برگشتی با نسبت ابعاد خاص را ترجیح دهد.

جاوا

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder()
        .setMediaAspectRatio(NativeAdOptions.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
        .build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build();

کاتلین

val nativeAdOptions =
  NativeAdOptions.Builder()
    .setMediaAspectRatio(NativeAdOptions.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
    .build()

val loader = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build()

AD_UNIT_ID با شناسه واحد تبلیغاتی خود جایگزین کنید.

کنترل دانلود تصویر

کنترل دانلود تصویر به شما امکان می‌دهد تصمیم بگیرید که آیا فایل‌های تصویر یا فقط URIها توسط SDK بازگردانده شوند.

تابع NativeAdOptions.Builder.setReturnUrlsForImageAssets() را با یک مقدار boolean فراخوانی کنید.

  • کنترل دانلود تصویر به طور پیش‌فرض غیرفعال است.

  • وقتی غیرفعال باشد، SDK تبلیغات موبایلی گوگل هم تصویر و هم URI را برای شما پر می‌کند.

  • وقتی این گزینه فعال باشد، SDK فقط URI را پر می‌کند و به شما امکان می‌دهد تصاویر واقعی را به دلخواه خود دانلود کنید.

مثال زیر به SDK دستور می‌دهد که فقط URI را برگرداند.

جاوا

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder().setReturnUrlsForImageAssets(true).build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID")
        .withNativeAdOptions(nativeAdOptions)
        .forNativeAd(
            nativeAd -> {
              List<Uri> imageUris = new ArrayList<>();
              for (Image image : nativeAd.getImages()) {
                imageUris.add(image.getUri());
              }
            })
        .build();

کاتلین

val nativeAdOptions = NativeAdOptions.Builder().setReturnUrlsForImageAssets(true).build()

val loader =
  AdLoader.Builder(context, "AD_UNIT_ID")
    .withNativeAdOptions(nativeAdOptions)
    .forNativeAd { nativeAd ->
      val imageUris = nativeAd.images.mapNotNull { it.uri }
    }
    .build()

کنترل‌های بارگذاری تصویر

برخی از تبلیغات به جای یک تصویر، مجموعه‌ای از تصاویر را دارند. از این ویژگی برای نشان دادن اینکه آیا برنامه شما آماده نمایش همه تصاویر است یا فقط یک تصویر، استفاده کنید.

تابع NativeAdOptions.Builder.setRequestMultipleImages() با یک مقدار boolean فراخوانی کنید.

  • کنترل‌های بارگذاری تصویر به طور پیش‌فرض غیرفعال هستند.

  • وقتی غیرفعال باشد، برنامه شما به SDK دستور می‌دهد که فقط اولین تصویر را برای هر فایلی که حاوی یک سری است، ارائه دهد.

  • وقتی فعال باشد، برنامه شما نشان می‌دهد که آماده نمایش تمام تصاویر برای هر دارایی است که بیش از یک تصویر دارد.

مثال زیر به SDK دستور می‌دهد که چندین تصویر را برگرداند.

جاوا

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder().setRequestMultipleImages(true).build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build();

کاتلین

val nativeAdOptions = NativeAdOptions.Builder().setRequestMultipleImages(true).build()

val loader = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build()

جایگاه‌های AdChoices

این بخش جزئیات نحوه قرارگیری پوشش AdChoices را شرح می‌دهد. شما می‌توانید محل قرارگیری آن را در یکی از چهار گوشه تنظیم کنید یا آن را در یک نمای سفارشی نمایش دهید.

کنترل‌های موقعیت AdChoices

کنترل‌های موقعیت AdChoices به شما امکان می‌دهند انتخاب کنید که آیکون AdChoices در کدام گوشه نمایش داده شود.

NativeAdOptions.Builder.setAdChoicesPlacement() با مقدار NativeAdOption.AdChoicesPlacement فراخوانی کنید.

  • اگر تنظیم نشده باشد، موقعیت آیکون AdChoices در بالا سمت راست تنظیم می‌شود.

  • در صورت تنظیم، AdChoices طبق درخواست در موقعیت سفارشی قرار می‌گیرد.

مثال زیر نحوه تنظیم موقعیت تصویر سفارشی AdChoices را نشان می‌دهد.

جاوا

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder()
        .setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
        .build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build();

کاتلین

val nativeAdOptions =
  NativeAdOptions.Builder()
    .setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
    .build()

val loader = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build()

نمای سفارشی AdChoices

ویژگی نمای سفارشی AdChoices به شما امکان می‌دهد آیکون AdChoices را در یک مکان سفارشی قرار دهید. این با کنترل‌های موقعیت AdChoices متفاوت است که فقط امکان تعیین یکی از چهار گوشه را فراهم می‌کند.

تابع NativeAdView.setAdChoicesView() با مقدار AdChoicesView فراخوانی کنید.

مثال زیر نحوه تنظیم یک نمای AdChoices سفارشی را نشان می‌دهد، به طوری که آیکون AdChoices درون AdChoicesView رندر شود.

جاوا

NativeAdView nativeAdView = new NativeAdView(context);
AdChoicesView adChoicesView = new AdChoicesView(context);
nativeAdView.setAdChoicesView(adChoicesView);

کاتلین

val nativeAdView = NativeAdView(context)
val adChoicesView = AdChoicesView(context)
nativeAdView.adChoicesView = adChoicesView

کنترل‌های ویدیویی

این بخش جزئیات نحوه سفارشی‌سازی تجربه پخش برای تبلیغات ویدیویی را شرح می‌دهد. شما می‌توانید حالت بی‌صدای اولیه را تنظیم کرده و کنترل‌های پخش سفارشی را پیاده‌سازی کنید.

شروع رفتار بی‌صدا

حالت بی‌صدا در شروع به شما امکان می‌دهد صدای شروع ویدیو را غیرفعال یا فعال کنید.

تابع VideoOptions.Builder.setStartMuted() با یک مقدار boolean فراخوانی کنید.

  • رفتار بی‌صدا کردنِ شروع به طور پیش‌فرض فعال است.

  • وقتی غیرفعال باشد، برنامه شما درخواست می‌کند که ویدیو با صدا شروع شود.

  • وقتی فعال باشد، برنامه شما درخواست می‌کند که ویدیو با صدای بی‌صدا شروع شود.

مثال زیر نحوه شروع ویدیو با صدای بدون صدا را نشان می‌دهد.

جاوا

VideoOptions videoOptions = new VideoOptions.Builder().setStartMuted(false).build();

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder().setVideoOptions(videoOptions).build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build();

کاتلین

val videoOptions = VideoOptions.Builder().setStartMuted(false).build()

val nativeAdOptions = NativeAdOptions.Builder().setVideoOptions(videoOptions).build()

val loader = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build()

کنترل‌های پخش سفارشی

این به شما امکان می‌دهد کنترل‌های ورودی ویدیوی سفارشی را برای پخش، مکث یا بی‌صدا کردن ویدیو درخواست کنید.

تابع VideoOptions.Builder.setCustomControlsRequested() با یک مقدار boolean فراخوانی کنید.

  • کنترل پخش سفارشی به طور پیش‌فرض غیرفعال است.

  • وقتی غیرفعال باشد، ویدیوی شما کنترل‌های ورودی رندر شده توسط SDK را نشان می‌دهد.

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

VideoController .

مثال زیر نحوه درخواست یک ویدیو با کنترل‌های پخش سفارشی را نشان می‌دهد.

جاوا

VideoOptions videoOptions = new VideoOptions.Builder().setCustomControlsRequested(true).build();

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder().setVideoOptions(videoOptions).build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build();

کاتلین

val videoOptions = VideoOptions.Builder().setCustomControlsRequested(true).build()

val nativeAdOptions = NativeAdOptions.Builder().setVideoOptions(videoOptions).build()

val loader = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build()

بررسی کنید که آیا کنترل‌های سفارشی فعال هستند یا خیر

از آنجا که در زمان درخواست مشخص نیست که آیا تبلیغ برگشتی امکان کنترل‌های ویدیویی سفارشی را فراهم می‌کند یا خیر، باید بررسی کنید که آیا کنترل‌های سفارشی فعال هستند یا خیر.

جاوا

MediaContent mediaContent = nativeAd.getMediaContent();
if (mediaContent != null) {
  VideoController videoController = mediaContent.getVideoController();
  boolean canShowCustomControls = videoController.isCustomControlsEnabled();
}

کاتلین

val mediaContent = nativeAd.mediaContent
if (mediaContent != null) {
  val videoController = mediaContent.videoController
  val canShowCustomControls = videoController.isCustomControlsEnabled
}

کنترل‌های ویدیویی سفارشی را رندر کنید

کنترل‌های ویدیویی سفارشی را با استفاده از بهترین شیوه‌های زیر رندر کنید:

  1. نمای کنترل‌های سفارشی را به عنوان فرزند نمای تبلیغات بومی رندر کنید. این رویکرد به محاسبات قابلیت مشاهده اندازه‌گیری باز اجازه می‌دهد تا کنترل‌های سفارشی را به عنوان یک مانع دوستانه در نظر بگیرند.
  2. از ایجاد یک لایه نامرئی روی کل نمای رسانه خودداری کنید. لایه‌های اضافی مانع از کلیک روی نمای رسانه می‌شوند و بر عملکرد تبلیغات بومی تأثیر منفی می‌گذارند. در عوض، یک لایه کوچک ایجاد کنید که به اندازه کافی بزرگ باشد تا کنترل‌ها را در خود جای دهد.

حرکات کلیک سفارشی

حرکات کلیک سفارشی یک ویژگی تبلیغات بومی است که امکان می‌دهد کشیدن انگشت روی نمایش تبلیغات به عنوان کلیک تبلیغ ثبت شود. این ویژگی برای کار با برنامه‌هایی طراحی شده است که از حرکات کشیدن انگشت برای پیمایش محتوا استفاده می‌کنند. این راهنما نحوه فعال کردن حرکات کلیک سفارشی در تبلیغات بومی شما را نشان می‌دهد.

تابع NativeAdOptions.Builder.enableCustomClickGestureDirection() را با یک NativeAdOptions.SwipeGestureDirection و یک boolean برای مشخص کردن اینکه آیا می‌خواهید ضربه‌ها به عنوان کلیک مجاز باشند یا خیر، فراخوانی کنید.

مثال زیر یک حرکت کشیدن انگشت به سمت راست سفارشی را پیاده‌سازی می‌کند و رفتار عادی تب را حفظ می‌کند.

  • حرکات کلیک سفارشی به طور پیش‌فرض غیرفعال است.

  • وقتی غیرفعال باشد، برنامه شما از رفتار کلیک کردن عادی پشتیبانی می‌کند.

  • وقتی این گزینه فعال شود، برنامه شما از حرکات کشیدن انگشت سفارشی پشتیبانی خواهد کرد.

مثال زیر یک حرکت کشیدن انگشت به سمت راست سفارشی را پیاده‌سازی می‌کند و رفتار عادی تب را حفظ می‌کند.

جاوا

NativeAdOptions adOptions =
    new NativeAdOptions.Builder()
        .enableCustomClickGestureDirection(
            NativeAdOptions.SWIPE_GESTURE_DIRECTION_RIGHT, /* tapsAllowed= */ true)
        .build();

// ca-app-pub-3940256099942544/2247696110 is a sample ad unit ID that has custom click
// gestures enabled.
AdLoader.Builder builder =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(adOptions);

کاتلین

val adOptions =
  NativeAdOptions.Builder()
    .enableCustomClickGestureDirection(NativeAdOptions.SWIPE_GESTURE_DIRECTION_RIGHT, true)
    .build()

val builder = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(adOptions)

به رویدادهای ژست کشیدن انگشت گوش دهید

وقتی یک کلیک با حرکت کشیدن انگشت ثبت می‌شود، SDK تبلیغات موبایل گوگل، علاوه بر متد onAdClicked() ، متد onAdSwipeGestureClicked() را نیز در AdListener فراخوانی می‌کند.

جاوا

AdLoader adLoader =
    new AdLoader.Builder(context, AD_UNIT_ID)
        .withAdListener(
            new AdListener() {
              // Called when a swipe gesture click is recorded.
              @Override
              public void onAdSwipeGestureClicked() {
                // Called when a swipe gesture click is recorded.
                Log.d(TAG, "A swipe gesture click has occurred.");
              }

              @Override
              public void onAdClicked() {
                // Called when a swipe gesture click or a tap click is recorded, as
                // configured in NativeAdOptions.
                Log.d(TAG, "A swipe gesture click or a tap click has occurred.");
              }
            })
        .build();

کاتلین

val adLoader =
  AdLoader.Builder(context, AD_UNIT_ID)
    .withAdListener(
      object : AdListener() {
        override fun onAdSwipeGestureClicked() {
          // Called when a swipe gesture click is recorded.
          Log.d(TAG, "A swipe gesture click has occurred.")
        }

        override fun onAdClicked() {
          // Called when a swipe gesture click or a tap click is recorded, as
          // configured in NativeAdOptions.
          Log.d(TAG, "A swipe gesture click or a tap click has occurred.")
        }
      }
    )
    .build()

میانجیگری

حرکات کلیک سفارشی فقط روی تبلیغات بومی که SDK تبلیغات موبایل گوگل رندر می‌کند، کار می‌کنند. منابع تبلیغاتی که برای رندر به SDK های شخص ثالث نیاز دارند ، به تنظیمات مسیرهای کلیک سفارشی پاسخ نمی‌دهند.