Uyarlanabilir banner'lar, reklam boyutunu her cihaz için optimize ederek performansı en üst düzeye çıkaran yeni nesil duyarlı reklamlardır. Yalnızca sabit yükseklikleri destekleyen sabit boyutlu banner'ların iyileştirilmesini sağlayan uyarlanabilir banner'lar, geliştiricilerin reklam genişliğini belirtmesine ve optimum reklam boyutunu belirlemek için bunu kullanmasına olanak tanır.
En iyi reklam boyutunu seçmek için satır içi uyarlanabilir banner'lar sabit yükseklik yerine maksimum yükseklikleri kullanır. Bu durum, performansı artırma fırsatlarıyla sonuçlanır.
Satır içi uyarlanabilir banner'lar ne zaman kullanılır?
Satır içi uyarlanabilir banner'lar, sabit uyarlanabilir banner'lara kıyasla daha büyük ve daha uzun banner'lardır. Ekranların yüksekliği değişkendir ve cihaz ekranı kadar uzun olabilir.
Bunlar, kaydırılan içerik içine yerleştirilmek üzere tasarlanmıştır. Örneğin:
Ön koşullar
- Mobile Ads Flutter eklentisini içe aktarma ile ilgili Başlangıç kılavuzundaki talimatları uygulayın.
Başlamadan önce
Uygulamanızda uyarlanabilir banner'ları uygularken şu noktalara dikkat edin:
Google Mobile Ads SDK'sının en son sürümünü ve uyumlulaştırma kullanıyorsanız uyumlulaştırma bağdaştırıcılarınızın en son sürümlerini kullandığınızdan emin olun.
Satır içi uyarlanabilir banner boyutları, mevcut tam genişlik kullanıldığında en iyi performansı gösterecek şekilde tasarlanmıştır. Çoğu durumda, bu değer kullanımdaki cihazın ekranının tam genişliğine eşittir. Geçerli güvenli alanları göz önünde bulundurun.
Uyarlanabilir boyutlarla çalışması için yeni satır öğelerini güncellemeniz veya oluşturmanız gerekebilir. Daha fazla bilgi edinin.
Reklam boyutunu alma yöntemleri şunlardır:
AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(int width)
AdSize.getLandscapeInlineAdaptiveBannerAdSize(int width)
AdSize.getPortraitInlineAdaptiveBannerAdSize(int width)
AdSize.getInlineAdaptiveBannerAdSize(int width, int maxHeight)
Satır içi uyarlanabilir banner API'leri kullanıldığında Google Mobile Ads SDK'sı, belirtilen genişliğe ve bir satır içi işarete sahip bir
AdSize
döndürür. Yükseklik, hangi API'yi kullandığınıza bağlı olarak sıfır veyamaxHeight
olur. Döndürüldüğünde reklamın gerçek yüksekliği de sunulur.Satır içi uyarlanabilir banner, kaydırılabilir içeriğe yerleştirilmek üzere tasarlanmıştır. Banner, API'ye bağlı olarak cihaz ekranının yüksekliği kadar olabilir veya maksimum yükseklikle sınırlandırılabilir.
Uygulama
Basit bir satır içi uyarlanabilir banner uygulamak için aşağıdaki adımları uygulayın.
- Satır içi uyarlanabilir banner reklam boyutu alın. Aldığınız boyut uyarlanabilir
banner'ı istemek için kullanılacaktır. Uyarlanabilir reklam boyutunu almak için aşağıdakileri yaptığınızdan emin olun:
- Kullanılan cihaz genişliğini yoğunluktan bağımsız pikseller halinde alın veya ekranın tam genişliğini kullanmak istemiyorsanız kendi genişliğinizi ayarlayın.
Ekran genişliğini öğrenmek için
MediaQuery.of(context)
kullanabilirsiniz. - Geçerli yön için satır içi uyarlanabilir
AdSize
nesnesi almak amacıylaAdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(int width)
gibi reklam boyutu sınıfında uygun statik yöntemleri kullanın. - Banner'ın yüksekliğini sınırlandırmak isterseniz
AdSize.getInlineAdaptiveBannerAdSize(int width, int maxHeight)
statik yöntemini kullanabilirsiniz.
- Kullanılan cihaz genişliğini yoğunluktan bağımsız pikseller halinde alın veya ekranın tam genişliğini kullanmak istemiyorsanız kendi genişliğinizi ayarlayın.
Ekran genişliğini öğrenmek için
- Reklam birimi kimliğiniz, uyarlanabilir reklam boyutunuz ve reklam isteği nesnesiyle bir
AdManagerBannerAd
nesnesi oluşturun. - Reklamı yükleyin.
onAdLoaded
geri çağırmasında, güncellenmiş platform reklam boyutunu almak veAdWidget
kapsayıcı yüksekliğini güncellemek içinAdManagerBannerAd.getPlatformAdSize()
kodunu kullanın.
Kod örneği
Ekleri hesaba katarak ekranın genişliğine sığacak şekilde satır içi uyarlanabilir bir banner yükleyen örnek bir widget'ı aşağıda görebilirsiniz:
import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
/// This example demonstrates inline adaptive banner ads.
///
/// Loads and shows an inline adaptive banner ad in a scrolling view,
/// and reloads the ad when the orientation changes.
class InlineAdaptiveExample extends StatefulWidget {
@override
_InlineAdaptiveExampleState createState() => _InlineAdaptiveExampleState();
}
class _InlineAdaptiveExampleState extends State<InlineAdaptiveExample> {
static const _insets = 16.0;
AdManagerBannerAd? _inlineAdaptiveAd;
bool _isLoaded = false;
AdSize? _adSize;
late Orientation _currentOrientation;
double get _adWidth => MediaQuery.of(context).size.width - (2 * _insets);
@override
void didChangeDependencies() {
super.didChangeDependencies();
_currentOrientation = MediaQuery.of(context).orientation;
_loadAd();
}
void _loadAd() async {
await _inlineAdaptiveAd?.dispose();
setState(() {
_inlineAdaptiveAd = null;
_isLoaded = false;
});
// Get an inline adaptive size for the current orientation.
AdSize size = AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(
_adWidth.truncate());
_inlineAdaptiveAd = AdManagerBannerAd(
// TODO: replace with your own ad unit.
adUnitId: '<your-ad-unit>',
size: size,
request: AdManagerAdRequest(),
listener: AdManagerBannerAdListener(
onAdLoaded: (Ad ad) async {
print('Inline adaptive banner loaded: ${ad.responseInfo}');
// After the ad is loaded, get the platform ad size and use it to
// update the height of the container. This is necessary because the
// height can change after the ad is loaded.
AdManagerBannerAd bannerAd = (ad as AdManagerBannerAd);
final AdSize? size = await bannerAd.getPlatformAdSize();
if (size == null) {
print('Error: getPlatformAdSize() returned null for $bannerAd');
return;
}
setState(() {
_inlineAdaptiveAd = bannerAd;
_isLoaded = true;
_adSize = size;
});
},
onAdFailedToLoad: (Ad ad, LoadAdError error) {
print('Inline adaptive banner failedToLoad: $error');
ad.dispose();
},
),
);
await _inlineAdaptiveAd!.load();
}
/// Gets a widget containing the ad, if one is loaded.
///
/// Returns an empty container if no ad is loaded, or the orientation
/// has changed. Also loads a new ad if the orientation changes.
Widget _getAdWidget() {
return OrientationBuilder(
builder: (context, orientation) {
if (_currentOrientation == orientation &&
_inlineAdaptiveAd != null &&
_isLoaded &&
_adSize != null) {
return Align(
child: Container(
width: _adWidth,
height: _adSize!.height.toDouble(),
child: AdWidget(
ad: _inlineAdaptiveAd!,
),
));
}
// Reload the ad if the orientation changes.
if (_currentOrientation != orientation) {
_currentOrientation = orientation;
_loadAd();
}
return Container();
},
);
}
@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(
title: Text('Inline adaptive banner example'),
),
body: Center(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: _insets),
child: ListView.separated(
itemCount: 20,
separatorBuilder: (BuildContext context, int index) {
return Container(
height: 40,
);
},
itemBuilder: (BuildContext context, int index) {
if (index == 10) {
return _getAdWidget();
}
return Text(
'Placeholder text',
style: TextStyle(fontSize: 24),
);
},
),
),
));
@override
void dispose() {
super.dispose();
_inlineAdaptiveAd?.dispose();
}
}