تبلیغات بومی

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

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

وقتی یک تبلیغ بومی بارگذاری می‌شود، برنامه شما یک شیء تبلیغ دریافت می‌کند که شامل دارایی‌های آن است و برنامه - به جای SDK تبلیغات موبایلی گوگل - مسئول نمایش آنها است.

به طور کلی، دو بخش برای اجرای موفقیت‌آمیز تبلیغات بومی وجود دارد: بارگذاری یک تبلیغ با استفاده از SDK و سپس نمایش محتوای تبلیغ در برنامه شما.

این صفحه نحوه استفاده از SDK برای بارگذاری تبلیغات بومی را نشان می‌دهد. نکته: برای اطلاعات بیشتر در مورد تبلیغات بومی به دفترچه راهنمای تبلیغات بومی ما مراجعه کنید.

همچنین می‌توانید برخی از داستان‌های موفقیت مشتری را بررسی کنید: مطالعه موردی ۱ ، مطالعه موردی ۲ .

پیش‌نیازها

همیشه با تبلیغات آزمایشی تست کنید

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

ساده‌ترین راه برای بارگذاری تبلیغات آزمایشی، استفاده از شناسه واحد تبلیغاتی آزمایشی اختصاصی ما برای تبلیغات بومی در اندروید است:

ca-app-pub-3940256099942544/2247696110

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

برای اطلاعات بیشتر در مورد نحوه عملکرد تبلیغات آزمایشی SDK تبلیغات موبایلی گوگل، به تبلیغات آزمایشی مراجعه کنید.

بارگذاری تبلیغات

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

ساخت یک AdLoader

کد زیر نحوه ساخت یک AdLoader را نشان می‌دهد که می‌تواند تبلیغات بومی را بارگذاری کند:

جاوا

// It is recommended to call AdLoader.Builder on a background thread.
new Thread(
        () -> {
          AdLoader adLoader =
              new AdLoader.Builder(context, "AD_UNIT_ID")
                  .forNativeAd(
                      new NativeAd.OnNativeAdLoadedListener() {
                        @Override
                        // The native ad loaded successfully. You can show the ad.
                        public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {}
                      })
                  .withAdListener(
                      new AdListener() {
                        @Override
                        // The native ad load failed. Check the adError message for failure
                        // reasons.
                        public void onAdFailedToLoad(@NonNull LoadAdError adError) {}
                      })
                  // Use the NativeAdOptions.Builder class to specify individual options
                  // settings.
                  .withNativeAdOptions(new NativeAdOptions.Builder().build())
                  .build();
        })
    .start();

کاتلین

// It is recommended to call AdLoader.Builder on a background thread.
CoroutineScope(Dispatchers.IO).launch {
  val adLoader =
    AdLoader.Builder(context, "AD_UNIT_ID")
      .forNativeAd { nativeAd ->
        // The native ad loaded successfully. You can show the ad.
      }
      .withAdListener(
        object : AdListener() {
          override fun onAdFailedToLoad(adError: LoadAdError) {
            // The native ad load failed. Check the adError message for failure reasons.
          }
        }
      )
      // Use the NativeAdOptions.Builder class to specify individual options settings.
      .withNativeAdOptions(NativeAdOptions.Builder().build())
      .build()
}

AD_UNIT_ID با شناسه دستگاه آزمایشی خود جایگزین کنید.

متد forNativeAd() مسئول آماده‌سازی AdLoader برای فرمت NativeAd است. هنگامی که یک تبلیغ با موفقیت بارگذاری شد، متد onNativeAdLoaded() شیء شنونده فراخوانی می‌شود.

راه‌اندازی یک AdListener با AdLoader (اختیاری)

هنگام ایجاد AdLoader ، تابع withAdListener یک AdListener برای لودر تنظیم می‌کند. این متد یک AdListener به عنوان تنها پارامتر خود می‌گیرد که هنگام وقوع رویدادهای چرخه عمر تبلیغ، فراخوانی‌هایی را از AdLoader دریافت می‌کند:

جاوا

adLoaderBuilder.withAdListener(
    // Override AdListener callbacks here.
    new AdListener() {});

کاتلین

adLoaderBuilder.withAdListener(
  // Override AdListener callbacks here.
  object : AdListener() {}
)

درخواست تبلیغات

پس از اتمام ساخت AdLoader ، زمان آن رسیده است که از آن برای درخواست تبلیغات استفاده کنید. برای این کار دو متد وجود دارد: loadAd() و loadAds() .

loadAd()

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

جاوا

adLoader.loadAd(new AdRequest.Builder().build());

کاتلین

adLoader.loadAd(AdRequest.Builder().build())

loadAds()

این روش درخواستی برای چندین تبلیغ (حداکثر پنج تبلیغ) ارسال می‌کند:

جاوا

// Load three native ads.
adLoader.loadAds(new AdRequest.Builder().build(), 3);

کاتلین

// Load three native ads.
adLoader.loadAds(AdRequest.Builder().build(), 3)

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

بارگذاری چندین تبلیغ (اختیاری)

متد loadAds() یک پارامتر اضافی می‌گیرد: تعداد تبلیغاتی که SDK باید برای درخواست بارگذاری کند. این عدد حداکثر پنج است و تضمینی وجود ندارد که SDK تعداد دقیق تبلیغات درخواستی را برگرداند.

تبلیغات گوگل برگشتی همگی با یکدیگر متفاوت خواهند بود، اگرچه تضمینی وجود ندارد که تبلیغات از موجودی رزرو شده یا خریداران شخص ثالث منحصر به فرد باشند.

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

تماس‌های برگشتی

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

پس از فراخوانی تابع loadAds() ، چندین فراخوانی مجدد از این نوع انجام می‌شود (حداقل یکی و نه بیشتر از تعداد تبلیغات درخواستی). برنامه‌هایی که چندین تبلیغ درخواست می‌کنند، باید در پیاده‌سازی‌های فراخوانی مجدد خود، AdLoader.isLoading() را فراخوانی کنند تا مشخص شود که آیا فرآیند بارگذاری به پایان رسیده است یا خیر.

در اینجا مثالی آورده شده است که نحوه بررسی isLoading() در فراخوانی onNativeAdLoaded() نشان می‌دهد:

جاوا

adLoaderBuilder
    .forNativeAd(
        nativeAd -> {
          // This callback is invoked when a native ad is successfully loaded.
        })
    .build();

کاتلین

adLoaderBuilder
  .forNativeAd { nativeAd ->
    // This callback is invoked when a native ad is successfully loaded.
  }
  .build()

منابع انتشار

حتماً از متد destroy() برای تبلیغات بومی بارگذاری شده استفاده کنید. این کار منابع استفاده شده را آزاد می‌کند و از نشت حافظه جلوگیری می‌کند.

تأیید کنید که تمام ارجاعات NativeAd در متد onDestroy() مربوط به activity شما از بین رفته‌اند.

در فراخوانی onNativeAdLoaded خود، مطمئن شوید که هرگونه تبلیغات بومی موجود که ارجاع آنها لغو خواهد شد را حذف کرده‌اید.

یکی دیگر از بررسی‌های کلیدی این است که آیا اکتیویتی از بین رفته است یا خیر، و اگر چنین است، تابع destroy() روی تبلیغ برگردانده شده فراخوانی کنید و بلافاصله آن را برگردانید:

جاوا

nativeAd.destroy();

کاتلین

nativeAd.destroy()

بهترین شیوه‌ها

هنگام بارگذاری تبلیغات، این قوانین را رعایت کنید.

  • برنامه‌هایی که از تبلیغات بومی در یک لیست استفاده می‌کنند، باید لیست تبلیغات را از قبل در حافظه پنهان (cache) ذخیره کنند.

  • هنگام پیش‌ذخیره‌سازی تبلیغات، حافظه پنهان (cache) خود را پاک کنید و پس از یک ساعت دوباره بارگذاری کنید.

  • تا زمانی که بارگذاری اولین درخواست به پایان نرسیده است، loadAd() یا loadAds() را روی AdLoader فراخوانی نکنید.
  • ذخیره تبلیغات بومی را فقط به موارد مورد نیاز محدود کنید. برای مثال، هنگام پیش‌ذخیره‌سازی، فقط تبلیغاتی را که بلافاصله روی صفحه نمایش قابل مشاهده هستند، ذخیره کنید. تبلیغات بومی فضای زیادی از حافظه را اشغال می‌کنند و ذخیره تبلیغات بومی بدون از بین بردن آنها منجر به استفاده بیش از حد از حافظه می‌شود.

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

شتاب سخت‌افزاری برای تبلیغات ویدیویی

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

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

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

اگر برنامه شما با فعال بودن شتاب‌دهنده سخت‌افزاری به صورت سراسری به درستی رفتار نمی‌کند، می‌توانید آن را برای فعالیت‌های منفرد نیز کنترل کنید. برای فعال یا غیرفعال کردن شتاب‌دهنده سخت‌افزاری، از ویژگی android:hardwareAccelerated برای عناصر <application> و <activity> در AndroidManifest.xml خود استفاده کنید. مثال زیر شتاب‌دهنده سخت‌افزاری را برای کل برنامه فعال می‌کند اما آن را برای یک فعالیت غیرفعال می‌کند:

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

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

تبلیغ خود را نمایش دهید

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