Banner

Banner reklamlar, uygulama düzeninde cihaz ekranının üst veya alt kısmında bir yer kaplar. Bu reklamlar, kullanıcılar uygulamayla etkileşimde bulunurken ekranda kalır ve belirli bir süre sonra otomatik olarak yenilenebilir.

Bu kılavuzda, AdMob'daki banner reklamların Flutter uygulamasına nasıl entegre edileceği gösterilmektedir. Kod snippet'leri ve talimatların yanı sıra banner'ların doğru boyutlandırmasıyla ilgili bilgiler de bulunmaktadır.

Her zaman test reklamlarıyla test etme

Uygulamalarınızı oluştururken ve test ederken canlı, üretim reklamları yerine test reklamlarını kullandığınızdan emin olun. Bunu yapmazsanız hesabınız askıya alınabilir.

Test reklamlarını yüklemenin en kolay yolu, banner'lar için özel test reklam birimi kimliğimizi kullanmaktır:

Android

ca-app-pub-3940256099942544/6300978111

iOS

ca-app-pub-3940256099942544/2934735716

Test reklam birimleri her istek için test reklamları döndürecek şekilde yapılandırılır. Bu reklam birimlerini kodlama, test ve hata ayıklama sırasında kendi uygulamalarınızda da kullanabilirsiniz. Yalnızca uygulamanızı yayınlamadan önce bunları kendi reklam birimi kimliklerinizle değiştirdiğinizden emin olun.

Reklam yükle

Aşağıdaki örnekte bir banner reklam örneği gösterilmektedir:

class BannerExampleState extends State<BannerExample> {
  BannerAd? _bannerAd;
  bool _isLoaded = false;

  // TODO: replace this test ad unit with your own ad unit.
  final adUnitId = Platform.isAndroid
    ? 'ca-app-pub-3940256099942544/6300978111'
    : 'ca-app-pub-3940256099942544/2934735716';

  /// Loads a banner ad.
  void loadAd() {
    _bannerAd = BannerAd(
      adUnitId: adUnitId,
      request: const AdRequest(),
      size: AdSize.banner,
      listener: BannerAdListener(
        // Called when an ad is successfully received.
        onAdLoaded: (ad) {
          debugPrint('$ad loaded.');
          setState(() {
            _isLoaded = true;
          });
        },
        // Called when an ad request failed.
        onAdFailedToLoad: (ad, err) {
          debugPrint('BannerAd failed to load: $error');
          // Dispose the ad here to free resources.
          ad.dispose();
        },
      ),
    )..load();
  }
}

Aşağıdaki tabloda standart banner boyutları listelenmiştir.

dp cinsinden boyut (GxY) Açıklama Reklam Boyutu Sabiti
320x50 Standart Banner banner
320x100 Büyük Banner largeBanner
320x250 Orta boy dikdörtgen mediumRectangle
468x60 Tam Boyutlu Banner fullBanner
728x90 Büyük afiş leaderboard
Sağlanan genişlik x Uyarlanabilir yükseklik Uyarlanabilir banner Yok

Özel bir banner boyutu tanımlamak için tercih ettiğiniz AdSize değerini ayarlayın:

final AdSize adSize = AdSize(300, 50);

BannerAdListener kullanarak yaşam döngüsü olaylarını (ör. bir reklamın yüklenmesi) dinleyebilirsiniz. Bu örnekte her bir yöntem uygulanır ve konsola bir mesaj kaydedilir:

class BannerExampleState extends State<BannerExample> {
  BannerAd? _bannerAd;
  bool _isLoaded = false;

  // TODO: replace this test ad unit with your own ad unit.
  final adUnitId = Platform.isAndroid
    ? 'ca-app-pub-3940256099942544/6300978111'
    : 'ca-app-pub-3940256099942544/2934735716';


  /// Loads a banner ad.
  void loadAd() {
    _bannerAd = BannerAd(
      adUnitId: adUnitId,
      request: const AdRequest(),
      size: AdSize.banner,
      listener: BannerAdListener(
        // Called when an ad is successfully received.
        onAdLoaded: (ad) {
          debugPrint('$ad loaded.');
          setState(() {
            _isLoaded = true;
          });
        },
        // Called when an ad request failed.
        onAdFailedToLoad: (ad, err) {
          debugPrint('BannerAd failed to load: $error');
          // Dispose the ad here to free resources.
          ad.dispose();
        },
        // Called when an ad opens an overlay that covers the screen.
        onAdOpened: (Ad ad) {},
        // Called when an ad removes an overlay that covers the screen.
        onAdClosed: (Ad ad) {},
        // Called when an impression occurs on the ad.
        onAdImpression: (Ad ad) {},
      ),
    )..load();
  }
}

Banner reklam görüntüleyin

Bir BannerAd öğesini widget olarak görüntülemek için load() çağırdıktan sonra desteklenen bir reklamla bir AdWidget örneği oluşturmanız gerekir. Widget'ı load() çağrısı yapmadan önce oluşturabilirsiniz, ancak widget ağacına eklenmeden önce load() çağrılmalıdır.

AdWidget, Flutter'ın Widget sınıfını devralır ve diğer herhangi bir widget gibi kullanılabilir. iOS'te, widget'ı belirli bir genişlik ve yükseklikte bir widget'a yerleştirdiğinizden emin olun. Aksi takdirde, reklamınız görüntülenmeyebilir. BannerAd, reklamla eşleşen bir boyuta sahip bir kapsayıcıya yerleştirilebilir:

...
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!),
      ),
    ),
  )
}
...

Artık erişim gerektirmeyen reklamlar imha edilmelidir. dispose() çağrısının ne zaman yapılacağına ilişkin en iyi uygulama, AdWidget öğesinin widget ağacından kaldırıldıktan sonra veya BannerAdListener.onAdFailedToLoad() geri çağırmasından sonra çağrılmasıdır.

İşte bu kadar. Uygulamanız artık banner reklam göstermeye hazır.

Android 9 ve önceki sürümlerde kaydırma sınırlaması

Android 9 veya önceki sürümleri çalıştıran eski ya da daha eski bazı cihazların, kaydırma görünümlerinde satır içi banner reklamlar gösterirken optimum düzeyde performans göstermeyebileceğinin farkındayız. Bu tür banner'ları yalnızca Android 10 veya sonraki sürümlerde kullanmanızı öneririz. Sabit banner'lar gibi sabit konumlu banner'lar bu durumdan etkilenmez ve tüm Android API düzeylerinde optimum performansla kullanılabilir.

GitHub'daki örneği tamamlayın

Banner