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

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

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

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

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

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

پیش‌نیازها

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

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

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

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

ca-app-pub-3940256099942544/2247696110

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

برای جزئیات درباره آگهی‌های آزمایشی 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 AdRequest.Builder().build());

Kotlin

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

loadAds()

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

جاوا

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

Kotlin

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

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

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

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

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

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

بازخوانی‌ها

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

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

در اینجا مثالی از نحوه بررسی isLoading() در onNativeAdLoaded() برگشتی آورده شده است:

جاوا

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

Kotlin

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

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

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

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

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

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

جاوا

nativeAd.destroy();

Kotlin

nativeAd.destroy()

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

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

  • برنامه‌هایی که از آگهی‌های بومی در فهرست استفاده می‌کنند باید فهرست آگهی‌ها را پیش‌نهان‌سازی کنند.

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

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

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

شتاب سخت‌افزاری برای آگهی‌های ویدیویی

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

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

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

اگر برنامه شما با فعال بودن شتاب سخت‌افزاری در سطح جهانی به‌درستی عمل نمی‌کند، می‌توانید آن را برای فعالیت‌های جداگانه نیز کنترل کنید. برای فعال یا غیرفعال کردن شتاب سخت‌افزاری، از ویژگی 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 یا آگهی‌های تمام‌صفحه بومی مراجعه کنید.