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

پلاتفرم را انتخاب کنید: Android iOS Flutter Unity Android (Legacy)

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

وقتی آگهی بومی بار می‌شود، برنامه‌تان شیء آگهی‌ای دریافت می‌کند که حاوی دارایی‌های آن است، و سپس برنامه (و نه Google Mobile Ads SDK (Legacy)) مسئول نمایش آن‌ها است.

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

این صفحه نحوه استفاده از کیت توسعه نرم‌افزار را برای بار کردن آگهی‌های بومی نشان می‌دهد.

پیش‌نیازها

پیش‌از ادامه دادن، Google Mobile Ads SDK (Legacy) را راه‌اندازی کنید.

همیشه با آگهی‌های آزمایشی آزمایش کنید

هنگام ساختن و آزمایش کردن برنامه‌هایتان، حتماً از آگهی‌های آزمایشی استفاده کنید نه آگهی‌های زنده و تولیدی.

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

/21775744923/example/native

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

برای جزئیات مربوط به Google Mobile Ads SDK (Legacy) آگهی آزمایشی، به فعال کردن آگهی‌های آزمایشی مراجعه کنید.

بار کردن آگهی‌ها

آگهی‌های بومی با کلاس 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();

Kotlin

// 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() {});

Kotlin

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

درخواست آگهی

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

loadAd()

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

جاوا

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

Kotlin

adLoader.loadAd(AdManagerAdRequest.Builder().build())

loadAds()

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

جاوا

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

Kotlin

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

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

بار کردن چندین آگهی (اختیاری)

روش loadAds() پارامتر اضافه‌ای می‌گیرد: تعداد آگهی‌هایی که کیت توسعه نرم‌افزار باید برای درخواست بار کند. این تعداد به پنج محدود شده است و تضمین نمی‌شود که کیت توسعه نرم‌افزار دقیقاً تعداد آگهی‌های درخواست‌شده را برگرداند.

آگهی‌های Google برگردانده‌شده همگی با یکدیگر متفاوت خواهند بود، هرچند تضمینی نیست که آگهی‌های موجودی رزروشده یا خریداران طرف سوم منحصربه‌فرد باشند.

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

بازخوانی‌ها

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

آزاد کردن منابع

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

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

در فراخوانی برگشتی onNativeAdLoaded، حتماً هرگونه آگهی بومی موجود را که ارجاع‌زدایی خواهد شد ازبین ببرید.

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

جاوا

nativeAd.destroy();

Kotlin

nativeAd.destroy()

روال‌های مطلوب

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

  • برنامه‌هایی که از آگهی‌های بومی در فهرست استفاده می‌کنند باید فهرست آگهی‌ها را ازقبل در حافظه نهان ذخیره کنند.

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

  • تا زمانی که اولین درخواست بارگیری نشده است، با loadAd() در 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>

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

نمایش آگهی شما

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