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

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

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

وقتی آگهی بومی بار می‌شود، برنامه‌تان شیء آگهی‌ای دریافت می‌کند که حاوی دارایی‌های آن است، و سپس برنامه (و نه 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 فراخوانی نکنید.
  • ذخیره موقت آگهی بومی را فقط به آنچه نیاز است محدود کنید. برای مثال، هنگام پیش‌ذخیره‌سازی، فقط آگهی‌هایی را ذخیره کنید که بلافاصله در صفحه قابل‌مشاهده هستند. آگهی‌های بومی ردپای حافظه بزرگی دارند و ذخیره کردن آگهی‌های بومی در حافظه نهان بدون ازبین بردن آن‌ها منجر به استفاده بیش‌ازحد از حافظه می‌شود.

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

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

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

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

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

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

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