Banner reklamlar, uygulama düzeninin bir kısmını kaplayan dikdörtgen reklamlardır. Bunlar, kullanıcılar uygulama ile etkileşimde bulunurken ekranın üst veya alt kısmına sabitlenmiş olarak ya da kullanıcı sayfayı kaydırırken içerikle satır içi şekilde kalır. Banner reklamlar, belirli bir süre sonra otomatik olarak yenilenebilir. Daha fazla bilgi için Banner reklamlara genel bakış bölümüne bakın.
Bu kılavuzda, belirttiğiniz reklam genişliğini kullanarak her cihaz için reklam boyutunu optimize ederek performansı en üst düzeye çıkaran sabit uyarlanabilir banner reklamlarıkullanmaya nasıl başlayacağınız gösterilmektedir.
Sabit uyarlanabilir banner reklamlar, normal sabit boyutlu reklamlar yerine sabit en boy oranlı reklamlardır. En boy oranı, 320x50 endüstri standardına benzer. Kullanılabilecek tam genişliği belirtmenizin ardından, size bu genişliğe uygun optimum yüksekliğe sahip bir reklam döndürür. Optimum yükseklik, aynı cihazdan yapılan istekler arasında değişmez ve reklam yenilendiğinde etrafındaki görünümlerin taşınması gerekmez.
Ön koşullar
- Başlangıç kılavuzunu tamamlayın.
Her zaman test reklamlarıyla test etme
Uygulamalarınızı oluşturup test ederken canlı üretim reklamları yerine test reklamlarını kullandığınızdan emin olun. Aksi takdirde hesabınız askıya alınabilir.
Test reklamlarını yüklemenin en kolay yolu, Android banner'lar için özel test reklam birimi kimliğimizi kullanmaktır:
/21775744923/example/banner
Özel olarak her istek için test reklamı döndürecek şekilde yapılandırılmıştır. Kodlama, test etme ve hata ayıklama sırasında bu özelliği kendi uygulamalarınızda kullanabilirsiniz. Sadece uygulamanızı yayınlamadan önce bunu kendi reklam birimi kimliğinizle değiştirdiğinizden emin olun.
Mobile Ads SDK'sının test reklamlarının işleyiş şekli hakkında daha fazla bilgi için Test Reklamları konusuna bakın.
Düzene AdManagerAdView ekleyin
Bir banner'ın görüntülenmesinin ilk adımı, AdManagerAdView
öğesini, görüntülemek istediğiniz Activity
veya Fragment
düzenine yerleştirmektir.
Java
private AdSize getAdSize() {
// Determine the screen width (less decorations) to use for the ad width.
Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
float density = outMetrics.density;
float adWidthPixels = adContainerView.getWidth();
// If the ad hasn't been laid out, default to the full screen width.
if (adWidthPixels == 0) {
adWidthPixels = outMetrics.widthPixels;
}
int adWidth = (int) (adWidthPixels / density);
return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
}
private void loadBanner() {
// Create a new ad view.
AdManagerAdView adView = new AdManagerAdView(this);
adView.setAdSizes(getAdSize());
adView.setAdUnitId("/21775744923/example/banner");
// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);
// Start loading the ad in the background.
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);
}
Kotlin
// Determine the screen width (less decorations) to use for the ad width.
// If the ad hasn't been laid out, default to the full screen width.
private val adSize: AdSize
get() {
val display = windowManager.defaultDisplay
val outMetrics = DisplayMetrics()
display.getMetrics(outMetrics)
val density = outMetrics.density
var adWidthPixels = binding.adViewContainer.width.toFloat()
if (adWidthPixels == 0f) {
adWidthPixels = outMetrics.widthPixels.toFloat()
}
val adWidth = (adWidthPixels / density).toInt()
return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
}
private fun loadBanner() {
// Create a new ad view.
val adView = AdManagerAdView(this)
adView.adSizes = adSize
adView.adUnitId = "/21775744923/example/banner"
// Create an ad request.
val adRequest = AdManagerAdRequest.Builder().build()
// Start loading the ad in the background.
adView.loadAd(adRequest)
}
Reklam yükle
AdManagerAdView uygulandıktan sonra, sonraki adım bir reklam yüklemektir. Bu, AdManagerAdView
sınıfındaki loadAd()
yöntemi ile yapılır. Tek bir reklam isteği hakkında hedefleme bilgileri gibi çalışma zamanı bilgilerini barındıran bir AdManagerAdRequest
parametresi alır.
Aşağıda, Activity
öğesinin onCreate()
yönteminde nasıl reklam yükleneceğini gösteren bir örnek verilmiştir:
Java
private void loadBanner() {
// Create a new ad view.
adView = new AdManagerAdView(this);
adView.setAdUnitId(AD_UNIT);
adView.setAdSize(getAdSize());
// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);
// Start loading the ad in the background.
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);
}
Kotlin
private fun loadBanner() {
// This is an ad unit ID for a test ad. Replace with your own banner ad unit ID.
adView.adUnitId = "/6499/example/banner"
adView.setAdSize(adSize)
// Create an ad request.
val adRequest = AdManagerAdRequest.Builder().build()
// Start loading the ad in the background.
adView.loadAd(adRequest)
}
Reklamınız yüklenemezse, reklam biriminizi yenilenecek şekilde yapılandırdığınız sürece açıkça başka bir reklam isteğinde bulunmanız gerekmez. Google Mobile Ads SDK'sı, Ad Managerweb arayüzünde belirttiğiniz tüm yenileme hızına uyar. Yenilemeyi etkinleştirmediyseniz yeni bir istek göndermeniz gerekir.
İşte bu kadar. Uygulamanız artık banner reklam göstermeye hazır.
Reklam etkinlikleri
Reklamın yaşam döngüsünde yükleme, reklam gösterimi ve tıklamasının yanı sıra reklam açma ve kapatma etkinlikleri gibi çeşitli etkinlikleri dinleyebilirsiniz. Banner'ı yüklemeden önce geri çağırmayı ayarlamanız önerilir.Java
AdManagerAdView.setAdListener(new AdListener() {
@Override
public void onAdClicked() {
// Code to be executed when the user clicks on an ad.
}
@Override
public void onAdClosed() {
// Code to be executed when the user is about to return
// to the app after tapping on an ad.
}
@Override
public void onAdFailedToLoad(LoadAdError adError) {
// Code to be executed when an ad request fails.
}
@Override
public void onAdImpression() {
// Code to be executed when an impression is recorded
// for an ad.
}
@Override
public void onAdLoaded() {
// Code to be executed when an ad finishes loading.
}
@Override
public void onAdOpened() {
// Code to be executed when an ad opens an overlay that
// covers the screen.
}
});
Kotlin
AdManagerAdView.adListener = object: AdListener() {
override fun onAdClicked() {
// Code to be executed when the user clicks on an ad.
}
override fun onAdClosed() {
// Code to be executed when the user is about to return
// to the app after tapping on an ad.
}
override fun onAdFailedToLoad(adError : LoadAdError) {
// Code to be executed when an ad request fails.
}
override fun onAdImpression() {
// Code to be executed when an impression is recorded
// for an ad.
}
override fun onAdLoaded() {
// Code to be executed when an ad finishes loading.
}
override fun onAdOpened() {
// Code to be executed when an ad opens an overlay that
// covers the screen.
}
}
AdListener
içindeki geçersiz kılınabilir yöntemlerin her biri, bir reklamın yaşam döngüsündeki bir etkinliğe karşılık gelir.
Geçersiz kılınabilir yöntemler | |
---|---|
onAdClicked() |
Bir reklam için tıklama kaydedildiğinde onAdClicked() yöntemi çağrılır.
|
onAdClosed() |
Kullanıcı, bir reklamın hedef URL'sini görüntüledikten sonra uygulamaya geri döndüğünde onAdClosed() yöntemi çağrılır. Uygulamanız, askıya alınmış etkinlikleri devam ettirmek veya etkileşime hazır hale getirmek için gereken diğer işleri yapmak için bu hesabı kullanabilir.
|
onAdFailedToLoad() |
onAdFailedToLoad() yöntemi, parametre içeren tek yöntemdir. LoadAdError türündeki hata parametresi, hangi hatanın oluştuğunu açıklar. Daha fazla bilgi için Reklam Yükü Hatalarını Ayıklama dokümanlarına bakın.
|
onAdImpression() |
onAdImpression() yöntemi, bir reklam için gösterim kaydedildiğinde çağrılır.
|
onAdLoaded() |
onAdLoaded() yöntemi, bir reklamın yüklenmesi bittiğinde yürütülür. Örneğin, bir reklamın yükleneceğinden emin olana kadar AdManagerAdView öğesini etkinliğinize veya parçanıza eklemeyi ertelemek isterseniz bunu burada yapabilirsiniz.
|
onAdOpened() |
Bir reklam, ekranı kaplayan bir yer paylaşımını açtığında onAdOpened() yöntemi çağrılır.
|
Video reklamlar için donanım hızlandırma
Video reklamların banner reklam görünümlerinizde başarılı bir şekilde gösterilmesi için donanım hızlandırma etkinleştirilmiş olmalıdır.
Donanım hızlandırma varsayılan olarak etkindir, ancak bazı uygulamalar bunu devre dışı bırakmayı tercih edebilir. Bu durum uygulamanız için geçerliyse reklam kullanan Activity
sınıfları için donanım hızlandırmayı etkinleştirmenizi öneririz.
Donanım hızlandırmayı etkinleştirme
Uygulamanız genel olarak donanım hızlandırma etkinken düzgün çalışmıyorsa bunu bağımsız etkinlikler için de kontrol edebilirsiniz. Donanım hızlandırmayı etkinleştirmek veya devre dışı bırakmak isterseniz AndroidManifest.xml
sayfanızdaki <application>
ve <activity>
öğeleri için android:hardwareAccelerated
özelliğini kullanabilirsiniz. Aşağıdaki örnek, uygulamanın tamamında donanım hızlandırmayı etkinleştirir ancak tek bir etkinlik için devre dışı bırakır:
<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>
Donanım hızlandırmayı kontrol etme seçenekleri hakkında daha fazla bilgi için Donanım hızlandırma kılavuzuna bakın. Etkinlik devre dışı bırakılırsa donanım hızlandırma için tek tek reklam görünümlerinin etkinleştirilemeyeceğini, bu nedenle etkinlikte donanım hızlandırmanın etkinleştirilmiş olması gerektiğini unutmayın.
Manuel gösterim sayma
Manuel gösterim sayma yalnızca doğrudan Ad Manager'da trafiğe eklenen reklam öğelerinin bulunduğu doğrudan satılan ve kurum kampanyalarıyla uyumludur. Dolgu veya üçüncü taraf ağ reklamları için kullanılmamalıdır. Daha fazla bilgi için Gösterimleri ve tıklamaları sayma bölümüne bakın.
Bir gösterimin ne zaman kaydedilmesi gerektiğine dair özel koşullarınız varsa gösterim ping'lerini Ad Manager'a manuel olarak gönderebilirsiniz. Bunu yapmak üzere bir reklamı yüklemeden önce manuel gösterimler için AdManagerAdRequest
etkinleştirin:
Java
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
.setManualImpressionsEnabled(true)
.build();
Kotlin
val adRequest = AdManagerAdRequest.Builder()
.setManualImpressionsEnabled(true)
.build()
Bir reklamın başarıyla döndürüldüğünü ve ekranda gösterildiğini belirlediğinizde, manuel olarak bir gösterim kaydedebilirsiniz:
Java
AdManagerAdView.recordManualImpression();
Kotlin
AdManagerAdView.recordManualImpression()
Uygulama etkinlikleri
Uygulama etkinlikleri, çocuğunuzun uygulama koduna mesaj gönderebilen reklamlar oluşturmanıza olanak tanır. Uygulama, daha sonra bu mesajlara dayalı olarak işlem yapabilir.
AppEventListener
kullanarak Ad Manager'a özgü uygulama etkinliklerini dinleyebilirsiniz.
Bu etkinlikler, onAdLoaded()
çağrılmadan önce bile, reklamın yaşam döngüsü boyunca herhangi bir zamanda gerçekleşebilir.
Java
public interface AppEventListener {
void onAppEvent(String name, String info);
}
Kotlin
interface AppEventListener {
fun onAppEvent(name: String, info: String)
}
void onAppEvent(String name, String info)
, reklamda uygulama etkinliği gerçekleştiğinde çağrılır. Bu arayüz, etkinliğiniz veya başka bir nesne tarafından uygulanabilir:
Java
import com.google.android.gms.ads.admanager.*;
public class BannerExample extends Activity implements AppEventListener {
}
Kotlin
import com.google.android.gms.ads.admanager.*
class BannerExample : Activity(), AppEventListener {
}
ve ardından AdManagerAdView
cihazına geçirildi:
Java
AdManagerAdView.setAppEventListener(this);
Kotlin
AdManagerAdView.appEventListener = this
Aşağıda, renk adlı bir uygulama etkinliğine bağlı olarak uygulamanızın arka plan renginin nasıl değiştirileceğini gösteren bir örnek verilmiştir:
Java
@Override
public void onAppEvent(String name, String info) {
if ("color".equals(name)) {
if ("green".equals(info)) {
// Set background color to green.
} else if ("blue".equals(info)) {
// Set background color to blue.
} else {
// Set background color to black.
}
}
}
Kotlin
override fun onAppEvent(name: String?, info: String?) {
if (name == "color") {
when (info) {
"green" -> {
// Set background color to green.
}
"blue" -> {
// Set background color to blue.
}
else -> {
// Set background color to black.
}
}
}
}
Burada da İşleyici'ye renkli uygulama etkinlik mesajları gönderen ilgili reklam öğesi gösterilmektedir:
<html>
<head>
<script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
// Send a color=green event when ad loads.
admob.events.dispatchAppEvent("color", "green");
document.getElementById("ad").addEventListener("click", function() {
// Send a color=blue event when ad is clicked.
admob.events.dispatchAppEvent("color", "blue");
});
});
</script>
<style>
#ad {
width: 320px;
height: 50px;
top: 0px;
left: 0px;
font-size: 24pt;
font-weight: bold;
position: absolute;
background: black;
color: white;
text-align: center;
}
</style>
</head>
<body>
<div id="ad">Carpe diem!</div>
</body>
</html>
API Demo uygulamasında uygulama etkinliklerinin uygulanması için Ad Manager Uygulama Etkinlikleri örneğini inceleyin.
Ek kaynaklar
GitHub'daki örnekler
Sonraki adımlar
Daraltılabilir banner'lar
Daraltılabilir banner reklamlar, başlangıçta reklamı daha küçük bir boyuta daraltmak için bir düğmenin yer aldığı daha büyük bir yer paylaşımı olarak sunulan banner reklamlardır. Performansınızı daha da optimize etmek için bu rapordan yararlanabilirsiniz. Daha fazla bilgi için daraltılabilir banner reklamlar konusuna bakın.
Satır içi uyarlanabilir banner'lar
Satır içi uyarlanabilir banner'lar, sabit uyarlanabilir banner'lara kıyasla daha büyük ve daha uzundur. Değişken yükseklikte ve cihaz ekranı kadar uzun olabilir. Satır içi uyarlanabilir banner'lar, kaydırılabilir içeriğe banner reklam yerleştiren uygulamalar için sabit uyarlanabilir banner reklamların yerine önerilir. Daha fazla ayrıntı için satır içi uyarlanabilir banner'lar bölümüne bakın.