Banner reklamları oluşturma

Banner reklamlar, uygulama düzeninde cihaz ekranının üst veya alt kısmında bir yer kaplar. Kullanıcılar uygulamayla etkileşim kurarken ekranda kalmaya devam eder ve belirli bir süre sonra otomatik olarak yenilenebilir.

Bu kılavuz, sabit uyarlanabilir banner reklamları kullanmaya başlamanıza yardımcı olur. Sabit uyarlanabilir banner'lar, belirttiğiniz reklam genişliğini kullanarak her cihaz için reklam boyutunu optimize eder.

Sabit uyarlanabilir banner reklamlar, sabit boyutlu reklamlar yerine sabit en boy oranına sahip reklamlardır. En-boy oranı 320x50'ye benzer. Kullanılabilir tam genişliği belirttiğinizde Google Mobile Ads Flutter Plugin, bu genişlik için en uygun yüksekliğe sahip bir reklam döndürür. Reklam için en uygun yükseklik, farklı reklam isteklerinde sabit kalır ve reklam yenilendiğinde reklamı çevreleyen içerik yerinde kalır.

Her zaman test reklamlarıyla test edin

Uygulamalarınızı oluştururken ve test ederken yayındaki üretim reklamları yerine test reklamlarını kullandığınızdan emin olun. Bu koşula uymamanız halinde 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/9214589741

iOS

ca-app-pub-3940256099942544/2435281174

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

Reklam boyutunu alma

Büyük uyarlanabilir banner'lar, kaydırılmayan düzenler için tasarlanmış daha büyük bir biçim sunar. Bu banner'lar, standart sabit uyarlanabilir banner'lara kıyasla daha yüksek bir maksimum yüksekliğe (ekran yüksekliğinin% 20'sine kadar, 50 ile 150 dp arasında) olanak tanır. Bu genişletilmiş alan, video içerikler için optimize edilmiştir.

Doğru reklam boyutuna sahip bir banner reklam istemek için aşağıdaki adımları uygulayın:

  1. MediaQuery.of(context) kullanarak cihaz ekranının genişliğini yoğunluktan bağımsız piksel (dp) cinsinden alın. Tam ekran genişliğini kullanmak istemiyorsanız kendi genişliğinizi ayarlayabilirsiniz.

  2. AdSize nesnesi almak için AdSize sınıfında uygun statik yöntemi kullanın. Örneğin, geçerli yön için reklam boyutunu almak üzere AdSize.getLargeAnchoredAdaptiveBannerAdSize(int width) kullanın.

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

Reklam yükleme

Aşağıdaki örnekte bir banner reklam yükleniyor:

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 yerine kendi reklam birimi kimliğinizi yazın.

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

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

Reklam yenileme

Reklam biriminizi yenilenecek şekilde yapılandırdıysanız reklam yüklenemediğinde başka bir reklam istemeniz gerekmez. Google Mobile Ads Flutter Plugin, AdMob kullanıcı arayüzünde belirttiğiniz yenileme hızına uyar. Yenilemeyi etkinleştirmediyseniz yeni bir istek gönderin. Yenileme hızı ayarlama gibi reklam birimi yenileme hakkında daha fazla bilgi için Banner reklamlar için otomatik yenileme özelliğini kullanma başlıklı makaleyi inceleyin.

Banner reklam gösterme

BannerAd öğesini widget olarak göstermek için load() yöntemini çağırdıktan sonra desteklenen bir reklamla AdWidget örneği oluşturmanız gerekir. load() işlevini çağırmadan önce widget'ı oluşturabilirsiniz ancak widget ağacına eklemeden önce load() işlevini çağırmanız gerekir.

AdWidget, Flutter'ın Widget sınıfından devralınır ve diğer widget'lar gibi kullanılabilir. iOS'te, widget'ı genişliği ve yüksekliği belirtilmiş bir widget'a yerleştirdiğinizden emin olun. Aksi takdirde reklamınız gösterilmeyebilir. Bir BannerAd reklamla eşleşen boyutta 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!),
      ),
    ),
  ),

Erişime artık ihtiyaç duyulmadığında reklamın kaldırılması gerekir. dispose() yöntemini çağırmak için en iyi yöntem, AdWidget widget ağacından kaldırıldıktan sonra veya BannerAdListener.onAdFailedToLoad() geri çağırma işlevinde çağırmaktır.

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

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

Android 9 veya daha eski sürümleri çalıştıran bazı eski ya da daha az güçlü cihazların, kaydırma görünümlerinde satır içi banner reklamlar gösterilirken ideal olmayan performans gösterebileceğinin farkındayız. Bu banner türlerini yalnızca Android 10 veya sonraki sürümlerde kullanmanızı öneririz. Sabit konumlu banner'lar (ör. sabit banner'lar) etkilenmez ve tüm Android API düzeylerinde optimum performansla kullanılabilir.

GitHub'daki eksiksiz örnek

Örneğin tamamını görmek için API demosuna bakın.

Diğer banner türleri hakkında bilgi

Flutter uygulamanız için bu bölümde tanımlanan diğer banner türleri hakkında bilgi edinin.

Satır içi uyarlanabilir banner'lar

Satır içi uyarlanabilir banner'lar değişken yüksekliğe sahiptir ve sabit uyarlanabilir banner'lara kıyasla daha büyük ve daha yüksek banner'lardır. Banner reklamları kaydırılabilir içeriğe yerleştiren uygulamalar için sabit uyarlanabilir banner reklamlar yerine satır içi uyarlanabilir banner'lar önerilir. Daha fazla bilgi için satır içi uyarlanabilir banner'lar bölümünü inceleyin.

Daraltılabilir banner'lar

Daraltılabilir banner reklamlar, başlangıçta daha büyük bir yer paylaşımı olarak sunulan ve reklamı daha küçük bir boyuta daraltmak için bir düğme içeren banner reklamlardır. Performansınızı daha da optimize etmek için bu banner'ı kullanabilirsiniz. Daha fazla bilgi için daraltılabilir banner reklamlar başlıklı makaleyi inceleyin.