راه‌اندازی آگهی‌های برنمایی

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

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

آگهی‌های برنمای تطبیقی ثابت‌شده آگهی‌هایی با نسبت ابعادی ثابت هستند نه آگهی‌های اندازه ثابت. نسبت ابعادی مشابه با ۳۲۰x۵۰ است. پس‌از اینکه پهنای کامل دردسترس را مشخص کردید، Google Mobile Ads Flutter Plugin آگهی‌ای با ارتفاع بهینه برای آن پهنا برمی‌گرداند. ارتفاع بهینه برای آگهی در درخواست‌های آگهی مختلف ثابت می‌ماند و محتوای اطراف آگهی هنگام بازآوری آگهی در جای خود باقی می‌ماند.

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

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

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

Android

ca-app-pub-3940256099942544/9214589741

iOS

ca-app-pub-3940256099942544/2435281174

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

دریافت اندازه آگهی

برنماهای تطبیقی بزرگ قالب بزرگ‌تری را ارائه می‌دهند که برای چیدمان‌های غیرپیمایشی طراحی شده است. درمقایسه با برنمای تطبیقی لنگرانداخته استاندارد، این برنماها حداکثر ارتفاع بلندتری را امکان‌پذیر می‌کنند (تا ۲۰٪ از ارتفاع صفحه‌نمایش، بین ۵۰ و ۱۵۰ دی‌پی). این فضای افزایش‌یافته برای محتوای ویدیویی بهینه‌سازی شده است.

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

  1. عرض صفحه‌نمایش دستگاه را بااستفاده از MediaQuery.of(context) به پیکسل مستقل از تراکم (dp) دریافت کنید. اگر نمی‌خواهید از کل عرض صفحه استفاده کنید، می‌توانید عرض موردنظرتان را تنظیم کنید.

  2. از روش ایستا مناسب در کلاس AdSize برای دریافت شیء AdSize استفاده کنید. برای مثال، از AdSize.getLargeAnchoredAdaptiveBannerAdSize(int width) برای دریافت اندازه آگهی برای جهت فعلی استفاده کنید.

// Get an AnchoredAdaptiveBannerAdSize before loading the ad.
final size = await AdSize.getLargeAnchoredAdaptiveBannerAdSize(
  MediaQuery.sizeOf(context).width.truncate(),
);

بار کردن آگهی

مثال زیر آگهی برنمایی را بار می‌کند:

void _loadAd() async {
  // Get an AnchoredAdaptiveBannerAdSize before loading the ad.
  final size = await AdSize.getLargeAnchoredAdaptiveBannerAdSize(
    MediaQuery.sizeOf(context).width.truncate(),
  );

  if (size == null) {
    // Unable to get width of anchored banner.
    return;
  }

  unawaited(
    BannerAd(
      adUnitId: "_adUnitId",
      request: const AdRequest(),
      size: size,
      listener: BannerAdListener(
        onAdLoaded: (ad) {
          // Called when an ad is successfully received.
          debugPrint('Ad was loaded.');
          setState(() {
            _bannerAd = ad as BannerAd;
          });
        },
        onAdFailedToLoad: (ad, err) {
          // Called when an ad request failed.
          debugPrint('Ad failed to load with error: $err');
          ad.dispose();
        },
      ),
    ).load(),
  );
}

‫_adUnitId را با شناسه واحد آگهی خودتان جایگزین کنید.

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

onAdOpened: (Ad ad) {
  // Called when an ad opens an overlay that covers the screen.
  debugPrint('Ad was opened.');
},
onAdClosed: (Ad ad) {
  // Called when an ad removes an overlay that covers the screen.
  debugPrint('Ad was closed.');
},
onAdImpression: (Ad ad) {
  // Called when an impression occurs on the ad.
  debugPrint('Ad recorded an impression.');
},
onAdClicked: (Ad ad) {
  // Called when a click event occurs on the ad.
  debugPrint('Ad was clicked.');
},
onAdWillDismissScreen: (Ad ad) {
  // iOS only. Called before dismissing a full screen view.
  debugPrint('Ad will be dismissed.');
},

بازآوری آگهی

اگر واحد آگهی‌تان را برای بازآوری پیکربندی کرده باشید، وقتی آگهی بار نشود، نیازی نیست آگهی دیگری درخواست کنید. Google Mobile Ads Flutter Plugin به هر نرخ بازآوری که در AdMob UI مشخص کرده‌اید احترام می‌گذارد. اگر بازآوری را فعال نکرده‌اید، درخواست جدیدی صادر کنید. برای جزئیات بیشتر درباره بازآوری واحد آگهی، مانند تنظیم نرخ بازآوری، به استفاده از بازآوری خودکار برای آگهی‌های برنما مراجعه کنید.

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

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

‫AdWidget از کلاس Widget در Flutter ارث می‌برد و می‌تواند مانند هر ویجت دیگری استفاده شود. در iOS، مطمئن شوید ابزاره را در ابزاره‌ای با عرض و ارتفاع مشخص قرار دهید. درغیراین‌صورت، آگهی‌تان ممکن است نمایش داده نشود. BannerAd می‌تواند در ظرفی با اندازه مطابق با آگهی قرار گیرد:

if (_bannerAd != null)
  Align(
    alignment: Alignment.bottomCenter,
    child: SafeArea(
      child: SizedBox(
        width: _bannerAd!.size.width.toDouble(),
        height: _bannerAd!.size.height.toDouble(),
        child: AdWidget(ad: _bannerAd!),
      ),
    ),
  ),

وقتی دیگر به آگهی نیازی نیست، باید آن را دور انداخت. بهترین روش برای زمان فراخوانی dispose() یا پس‌از حذف AdWidget از درخت ابزاره است یا در فراخوانی برگشتی BannerAdListener.onAdFailedToLoad().

فقط همین! اکنون برنامه‌تان برای نمایش آگهی‌های برنمای آماده است.

محدودیت پیمایش در Android 9 و نسخه‌های قدیمی‌تر

می‌دانیم که برخی‌از دستگاه‌های قدیمی‌تر یا ضعیف‌تر که Android نسخه ۹ یا پایین‌تر دارند ممکن است هنگام نمایش آگهی‌های برنمای درون‌خطی در نماهای پیمایشی، عملکردی کمتر از حد مطلوب داشته باشند. توصیه می‌کنیم فقط در Android 10 یا نسخه‌های جدیدتر از این نوع برنماها استفاده کنید. برنماهای با موقعیت ثابت مانند برنماهای لنگرانداخته تحت‌تأثیر قرار نمی‌گیرند و می‌توانند با عملکرد بهینه در همه سطوح Android API استفاده شوند.

نمونه کامل در GitHub

برای مشاهده نمونه کامل، نسخه نمایشی میانای برنامه‌سازی کاربردی را ببینید.

آشنایی با انواع دیگر برنما

با انواع دیگر برنمای تعریف‌شده در این بخش برای برنامه Flutter خود آشنا شوید.

برنماهای تطبیقی درون‌خطی

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

برنماهای جمع‌شدنی

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