Doğal Reklam gösterme
Yerel reklam yüklendiğinde Google Mobile Ads SDK'sı karşılık gelen reklam biçimi. Ardından, reklamı göstermek uygulamanızın sorumluluğundadır ancak bunu hemen yapması gerekmez. Görüntülü Reklam Ağı'nda reklam biçimlerini daha kolay hale getirdiğimizde, SDK'da yalnızca aşağıdaki gibi bakın.
NativeAdView
sınıf
NativeAd
biçimi için karşılık gelen NativeAdView
sınıfı vardır. Bu sınıf, yayıncıların NativeAd
için kök olarak kullanması gereken bir ViewGroup
sınıfıdır. CEVAP
tek bir NativeAdView
, tek bir doğal reklama karşılık gelir.
Bu reklamın öğelerini görüntülemek için kullanılan her görünüm (ör. ekran görüntüsü öğesini görüntüleyen ImageView
), NativeAdView
nesnesinin alt öğesi olmalıdır.
Öğe görünümlerini görüntülemek için LinearLayout
kullanan bir yerel reklamın görünüm hiyerarşisi şu şekilde görünebilir:
<com.google.android.gms.ads.nativead.NativeAdView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="vertical">
<LinearLayout
android:orientation="horizontal">
<ImageView
android:id="@+id/ad_app_icon" />
<TextView
android:id="@+id/ad_headline" />
</LinearLayout>
<!--Add remaining assets such as the image and media view.-->
</LinearLayout>
</com.google.android.gms.ads.nativead.NativeAdView>
NativeAdView
ve
bir NativeAd
ile doldurur:
Java
AdLoader.Builder builder = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
@Override
public void onNativeAdLoaded(NativeAd nativeAd) {
// Assumes you have a placeholder FrameLayout in your View layout
// (with ID fl_adplaceholder) where the ad is to be placed.
FrameLayout frameLayout =
findViewById(R.id.fl_adplaceholder);
// Assumes that your ad layout is in a file call native_ad_layout.xml
// in the res/layout folder
NativeAdView adView = (NativeAdView) getLayoutInflater()
.inflate(R.layout.native_ad_layout, null);
// This method sets the assets into the ad view.
populateNativeAdView(nativeAd, adView);
frameLayout.removeAllViews();
frameLayout.addView(adView);
}
});
Kotlin
val builder = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd { nativeAd ->
// Assumes you have a placeholder FrameLayout in your View layout
// (with ID fl_adplaceholder) where the ad is to be placed.
val frameLayout: FrameLayout = findViewById(R.id.fl_adplaceholder)
// Assumes that your ad layout is in a file call native_ad_layout.xml
// in the res/layout folder
val adView = layoutInflater
.inflate(R.layout.native_ad_layout, null) as NativeAdView
// This method sets the assets into the ad view.
populateNativeAdView(nativeAd, adView)
frameLayout.removeAllViews()
frameLayout.addView(adView)
}
Belirli bir yerel reklama ait tüm öğelerin
NativeAdView
düzeni. Google Mobile Ads SDK'sı, yerel reklam öğeleri yerel reklam görünümü düzeninin dışında oluşturulduğunda uyarı kaydetmeye çalışır.
Reklam görüntüleme sınıfları, kullanılan görünümü kaydetmek için kullanılan yöntemleri de
her bir bağımsız öğe ve bir diğeri NativeAd
nesnesini kaydetmek için kullanılır.
Görünümlerin bu şekilde kaydedilmesi, SDK'nın görevleri otomatik olarak işlemesine olanak tanır
Örneğin:
- Tıklamaları kaydetme
- Gösterimlerin, ilk piksel ekranda göründüğünde kaydedilmesi
- Reklam Seçenekleri yer paylaşımını gösterme
Reklam Seçenekleri yer paylaşımı
SDK, her reklam görüntüsüne bir Reklam Seçenekleri yer paylaşımı ekler. Doğal reklam görüntünüzün tercih ettiğiniz köşesinde otomatik olarak eklenen Reklam Seçenekleri logosu için yer bırakın. Ayrıca, Reklam Seçenekleri yer paylaşımının kolayca görülebilmesi önemli olduğundan arka plan renklerini ve resimleri uygun şekilde seçin. Yer paylaşımının görünümü ve işlevi hakkında daha fazla bilgi için Doğal reklamlar alan açıklamaları başlıklı makaleyi inceleyin.
Reklam ilişkilendirmesi
Görüntülemenin bir reklam olduğunu belirtmek için bir reklam ilişkilendirmesi göstermeniz gerekir. Daha fazla bilgi için politikamızı yönergelerimize bakın.
Kod örneği
Doğal reklam yayınlama adımları şunlardır:
NativeAdView
sınıfının bir örneğini oluşturun.Gösterilecek her reklam öğesi için:
- Öğe görünümünü reklam nesnesindeki öğeyle doldurun.
- Öğe görünümünü
NativeAdView
sınıfıyla kaydedin.
Yerel reklam düzeniniz büyük bir medya öğesi içeriyorsa
MediaView
öğesini kaydedin.Reklam nesnesini
NativeAdView
sınıfına kaydedin.
Aşağıda, NativeAd
görüntüleyen bir örnek işlev verilmiştir:
Java
private void displayNativeAd(ViewGroup parent, NativeAd ad) {
// Inflate a layout and add it to the parent ViewGroup.
LayoutInflater inflater = (LayoutInflater) parent.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
NativeAdView adView = (NativeAdView) inflater
.inflate(R.layout.ad_layout_file, parent);
// Locate the view that will hold the headline, set its text, and call the
// NativeAdView's setHeadlineView method to register it.
TextView headlineView = adView.findViewById<TextView>(R.id.ad_headline);
headlineView.setText(ad.getHeadline());
adView.setHeadlineView(headlineView);
// Repeat the process for the other assets in the NativeAd
// using additional view objects (Buttons, ImageViews, etc).
// If the app is using a MediaView, it should be
// instantiated and passed to setMediaView. This view is a little different
// in that the asset is populated automatically, so there's one less step.
MediaView mediaView = (MediaView) adView.findViewById(R.id.ad_media);
adView.setMediaView(mediaView);
// Call the NativeAdView's setNativeAd method to register the
// NativeAdObject.
adView.setNativeAd(ad);
// Ensure that the parent view doesn't already contain an ad view.
parent.removeAllViews();
// Place the AdView into the parent.
parent.addView(adView);
}
Kotlin
fun displayNativeAd(parent: ViewGroup, ad: NativeAd) {
// Inflate a layout and add it to the parent ViewGroup.
val inflater = parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)
as LayoutInflater
val adView = inflater.inflate(R.layout.ad_layout_file, parent) as NativeAdView
// Locate the view that will hold the headline, set its text, and use the
// NativeAdView's headlineView property to register it.
val headlineView = adView.findViewById<TextView>(R.id.ad_headline)
headlineView.text = ad.headline
adView.headlineView = headlineView
// Repeat the process for the other assets in the NativeAd using
// additional view objects (Buttons, ImageViews, etc).
val mediaView = adView.findViewById<MediaView>(R.id.ad_media)
adView.mediaView = mediaView
// Call the NativeAdView's setNativeAd method to register the
// NativeAdObject.
adView.setNativeAd(ad)
// Ensure that the parent view doesn't already contain an ad view.
parent.removeAllViews()
// Place the AdView into the parent.
parent.addView(adView)
}
Görevler şunlardır:
Düzeni şişirme
Java
LayoutInflater inflater = (LayoutInflater) parent.getContext() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); NativeAdView adView = (NativeAdView) inflater .inflate(R.layout.ad_layout_file, parent);
Kotlin
val inflater = parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater val adView = inflater.inflate(R.layout.ad_layout_file, parent) as NativeAdView
Bu kod, yerel bir öğe görüntülemek için görünümler içeren XML düzenini şişiriyor reklamını yapabilir ve ardından
NativeAdView
öğesine bir referans bulabilir. Şunu da yapabileceğinizi unutmayın: Parçanızda veya etkinliğinizde varsa mevcut birNativeAdView
öğesini yeniden kullanma ya da kullanmadan da dinamik olarak örnek oluşturabilirsiniz.Öğe görünümlerini doldurma ve kaydetme
Bu örnek kod, başlığı görüntülemek için kullanılan görünümü bulur, reklam nesnesi tarafından sağlanan dize öğesini kullanarak metnini ayarlar ve
NativeAdView
nesnesine kaydeder:Java
TextView headlineView = adView.findViewById<TextView>(R.id.ad_headline); headlineView.setText(ad.getHeadline()); adView.setHeadlineView(headlineView);
Kotlin
val headlineView = adView.findViewById<TextView>(R.id.ad_headline) headlineView.text = ad.headline adView.headlineView = headlineView
Görünümü bulma, değerini ayarlama ve reklam görüntüleme sınıfına kaydetme işlemi, uygulamanın görüntüleyeceği doğal reklam nesnesi tarafından sağlanan her öğe için tekrarlanmalıdır.
Herkese açık kullanıcı adı tıklamaları
Bu kapsamdaki görüntülemeler için herhangi bir özel tıklama işleyici uygulamayın: doğal reklam görüntülemesi. Önceki bölümde açıklandığı gibi, reklam görüntüleme öğelerini doğru şekilde doldurup kaydettiğiniz sürece reklam görüntüleme öğelerine yapılan tıklamalar SDK tarafından işlenir.
Tıklamaları dinlemek için Google Mobile Ads SDK tıklama geri çağırma işlevini uygulayın:
Java
AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110") // ... .withAdListener(new AdListener() { @Override public void onAdFailedToLoad(LoadAdError adError) { // Handle the failure by logging. } @Override public void onAdClicked() { // Log the click event or other custom behavior. } }) .build();
Kotlin
val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") // ... .withAdListener(object : AdListener() { override fun onAdFailedToLoad(adError: LoadAdError) { // Handle the failure. } override fun onAdClicked() { // Log the click event or other custom behavior. } }) .build()
MediaView'u kaydetme
Lütfen
MediaView
öğesinin yerineImageView
yerel öğenizin düzenine bir ana resim öğesi eklemek istiyorsanız reklam.MediaView
, ana medya öğesini göstermek için tasarlanmış özel birView
öğesidir. video veya resim kullanabilirsiniz.MediaView
, XML düzeninde tanımlanabilir veya dinamik olarak oluşturulabilir. Diğer tüm öğe görünümleri gibi birNativeAdView
öğesinin görünüm hiyerarşisi içine yerleştirilmelidir.MediaView
kullanan uygulamalarNativeAdView
:Java
// Populate and register the media asset view. nativeAdView.setMediaView(nativeAdBinding.adMedia);
Kotlin
// Populate and register the media asset view. nativeAdView.mediaView = nativeAdBinding.adMedia
ImageScaleType
MediaView
sınıfı, resimler gösterilirkenImageScaleType
özelliğine sahiptir. Bir resminMediaView
içinde ölçeklenme şeklini değiştirmek istersenizsetImageScaleType()
kullanarak ilgiliImageView.ScaleType
MediaView
yöntemi:Java
mediaView.setImageScaleType(ImageView.ScaleType.CENTER_CROP);
Kotlin
mediaView.imageScaleType = ImageView.ScaleType.CENTER_CROP
MediaContent
MediaContent
sınıfı, materyalin medya içeriğiyle ilgili verileri barındırır. yerel reklamdır. Bu reklam,MediaView
sınıfı kullanılarak gösterilir.MediaView
mediaContent
özelliği,MediaContent
örneğiyle ayarlandı:Mevcut bir video öğesi varsa arabelleğe alınır ve
MediaView
içinde oynatılmaya başlar. Video öğesinin kullanılabilir olup olmadığınıhasVideoContent()
Reklamda video öğesi yoksa
mainImage
öğesi indirilir. veMediaView
içine yerleştirilir.
Varsayılan olarak,
mainImage
indirilen ilk resim öğesidir. EğersetReturnUrlsForImageAssets(true)
kullanılıyor,mainImage
isenull
mainImage
özelliğini, manuel olarak indirdiğiniz görüntüye ayarlayın. Bu resim, yalnızca video öğesi olmadığında kullanılır.Doğal reklam nesnesini kaydetme
Bu son adımda, doğal reklam nesnesi gösterilmekten sorumlu görünüme kaydedilir.
Java
adView.setNativeAd(ad);
Kotlin
adView.setNativeAd(ad)
Reklamı yok etme
Yerel reklamınızı göstermeyi tamamladığınızda, reklamın uygun şekilde toplanmasını sağlar.
Java
nativeAd.destroy();
Kotlin
nativeAd.destroy()
GitHub'daki örnekler
Doğal reklamların uygulanmasını tamamlayın örneği:
Sonraki adımlar
Aşağıdaki konuları inceleyin: