Özel Yerel Reklam Biçimleri

Özel reklam biçimleri

Özel yerel reklam biçimleri, sistem tanımlı eşdeğerleri gibi GADAdLoader nesneleri kullanılarak yüklenir. GADAdLoader başlatılırken adTypes dizisine GADAdLoaderAdTypeCustomNative sabiti eklendiğinde, reklam yüklenirken özel yerel biçimler isteyecek şekilde yapılandırılır.

GADCustomNativeAdLoaderDelegate

Özel biçimleri yükleme protokolünün iki yöntemi vardır. Birincisi, GADAdLoader tarafından hangi biçim kimliklerini istemesi gerektiğini bulmak için kullanılır:

Swift

public func customNativeAdFormatIDs(for adLoader: GADAdLoader) -> [Any]

Objective-C

- (NSArray *)customNativeAdFormatIDsForAdLoader:(GADAdLoader *)adLoader;

Her özel yerel reklam biçiminin, reklam biçimini tanımlayan bir biçim kimliği vardır. Bu yöntem çağrıldığında, uygulamanız görüntülemeye hazır olduğu reklamların biçim kimliklerini içeren bir dizi döndürmelidir.

İkinci mesaj, sistem tanımlı biçimlere benzer şekilde, özel yerel reklam yüklendiğinde gönderilir:

Swift

public func adLoader(_ adLoader: GADAdLoader,
    didReceive customNativeAd: GADCustomNativeAd)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveCustomNativeAd:(GADCustomNativeAd *)customNativeAd;

Biçim Kimlikleri

Özel yerel reklam biçimlerini benzersiz bir şekilde işaret etmek için kullanılan biçim kimlikleri, Ad Manager kullanıcı arayüzünde Yayınlama açılır listesindeki Yerel bölümünde bulunabilir:

Her özel yerel reklamın biçim kimliği, adının yanında görünür. Adlardan birini tıkladığınızda, biçimin alanlarıyla ilgili bilgilerin gösterildiği bir ayrıntılar ekranına yönlendirilirsiniz:

Buradan bağımsız alanlar ekleyebilir, düzenleyebilir ve kaldırabilirsiniz. Her bir öğenin adını not edin. Ad, özel yerel reklam biçiminizi görüntülerken her bir öğenin verilerini almak için kullanılan anahtardır.

Özel yerel reklam biçimlerini gösterme

Özel yerel reklam biçimleri, yayıncıların bir reklamı oluşturan kendi öğe listesini tanımlama gücüne sahip olması açısından sistem tanımlı reklam biçimlerinden farklıdır. Bu nedenle, özel yerel reklamları görüntüleme süreci, sistem tanımlı biçimlere kıyasla birkaç açıdan farklıdır:

  1. GADCustomNativeAd, oluşturduğunuz özel yerel reklam biçimlerinden herhangi birini işleyeceği için adlandırılmış öğe erişimcilerine sahip değildir. Bunun yerine, alanın adını bağımsız değişken olarak alan imageForKey: ve stringForKey: gibi yöntemler sunar.
  2. GADCustomNativeAd ile kullanılacak GADNativeAdView gibi özel bir reklam görüntüleme sınıfı yok. Kullanıcı deneyimi için uygun olan görünümleri kullanabilirsiniz.
  3. Özel bir reklam görüntüleme sınıfı olmadığından, reklamın öğelerini görüntülemek için kullandığınız görünümlerin hiçbirini kaydetmeniz gerekmez.

Basit bir özel yerel reklam görüntüleyebilen bir reklam görünümü örneği aşağıda verilmiştir:

MySimpleNativeAdView.h

Swift

import UIKit
import GoogleMobileAds

/// Custom native ad view class with format ID 10063170.
class MySimpleNativeAdView: UIView {

  /// Weak references to this ad's asset views.
  @IBOutlet weak var headlineView: UILabel!
  @IBOutlet weak var mainImageView: UIImageView!
  @IBOutlet weak var captionView: UILabel!

  ...

  /// Populates the ad view with the custom native ad object.
  func populateWithCustomNativeAd(_ customNativeAd: GADCustomNativeAd) {
    ...
  }
}

Objective-C

@import UIKit;
@import GoogleMobileAds;

/// View representing a custom native ad format with format ID 10063170.
@interface MySimpleNativeAdView : UIView

// Weak references to this ad's asset views.
@property(weak, nonatomic) IBOutlet UILabel *headlineView;
@property(weak, nonatomic) IBOutlet UIImageView *mainImageView;
@property(weak, nonatomic) IBOutlet UILabel *captionView;

/// Populates the ad view with the custom native ad object.
- (void)populateWithCustomNativeAd:(GADCustomNativeAd *)customNativeAd;

@end

My SimpleNativeAdView.m (alıntı)

Swift

...
func populateWithCustomNativeAd(_ customNativeAd: GADCustomNativeAd) {
  self.customNativeAd = customNativeAd

  // Populate the custom native ad assets.
  headlineView.text = self.customNativeAd.stringForKey("Headline")
  mainImageView.image = self.customNativeAd.imageForKey("MainImage")?.image
  captionView.text = self.customNativeAd.stringForKey("Caption")
}
...

Objective-C

...
- (void)populateWithCustomNativeAd:(GADCustomNativeAd *)customNativeAd {
  self.customNativeAd = customNativeAd;

  // Populate the custom native ad assets.
  self.headlineView.text = [customNativeAd stringForKey:@"Headline"];
  self.mainImageView.image = [customNativeAd imageForKey:@"MainImage"].image;
  self.captionView.text = [customNativeAd stringForKey:@"Caption"];
}
...

Özel yerel reklam biçimleri için yerel video

Özel biçim oluştururken bu biçimi video için uygun hale getirme seçeneğiniz vardır.

Uygulama uygulamanızda, videonun görünümünü almak için GADCustomNativeAd.mediaView özelliğini kullanabilirsiniz. Sonra bu görünümü görünüm hiyerarşinize ekleyin. Reklamın video içeriği yoksa reklamı video olmadan göstermek için alternatif planlar yapın.

Aşağıdaki örnekte, reklamın video içeriği olup olmadığı kontrol edilir ve video yoksa yerine bir resim gösterilir:

Swift

...
  /// Populates the ad view with the custom native ad object.
  func populate(withCustomNativeAd customNativeAd: GADCustomNativeAd) {
    if customNativeAd.videoController.hasVideoContent(),
      let mediaView = customNativeAd.mediaView {
      updateMainView(mediaView)
    } else {
      // Assumes your native format has an image asset with the name MainImage.
      let image: UIImage? = customNativeAd.image(forKey: "MainImage")?.image
      updateMainView(UIImageView(image: image))
    }
  }

  private func updateMainView(_ mainView:UIView) {
    // Assumes you have a placeholder view for your media content.
    // Remove all the placeholder's subviews.
    for subview: UIView in mainPlaceholder.subviews {
      subview.removeFromSuperview()
    }
    mainPlaceholder.addSubview(mainView)
    // Size the media view to fill our container size.
    mainView.translatesAutoresizingMaskIntoConstraints = false
    let viewDictionary: [AnyHashable: Any] = ["mainView":mainView]
    mainPlaceholder.addConstraints(NSLayoutConstraint.constraints(
      withVisualFormat: "H:|[mainView]|", options: [], metrics: nil,
      views: viewDictionary as? [String : Any] ?? [String : Any]()))
    mainPlaceholder.addConstraints(NSLayoutConstraint.constraints(
      withVisualFormat: "V:|[mainView]|", options: [], metrics: nil,
      views: viewDictionary as? [String : Any] ?? [String : Any]()))
  }
...

Objective-C

...
- (void)populateWithCustomNativeAd:(GADCustomNativeAd *)ad {
  UIView *mainView = nil;
  if (ad.videoController.hasVideoContent) {
    mainView = ad.mediaView;
  } else {
    // Assumes your native format has an image asset with the name MainImage.
    UIImage *image = [ad imageForKey:@"MainImage"].image;
    mainView = [[UIImageView alloc] initWithImage:image];
  }
  // Assumes you have a placeholder view for your media content.
  for (UIView *subview in self.mainPlaceholder.subviews) {
    [subview removeFromSuperview];
  }
  [self.mainPlaceholder addSubview:mainView];

  // Size the main view to fill our container size.
  [mainView setTranslatesAutoresizingMaskIntoConstraints:NO];
  NSDictionary *viewDictionary = NSDictionaryOfVariableBindings(mainView);
  [self.mainPlaceholder
      addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[mainView]|"
                                                             options:0
                                                             metrics:nil
                                                               views:viewDictionary]];
  [self.mainPlaceholder
      addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[mainView]|"
                                                             options:0
                                                             metrics:nil
                                                               views:viewDictionary]];
}
...

Özel bir yerel reklamın video deneyimini nasıl özelleştirebileceğiniz hakkında daha fazla bilgi için GADVideoController bölümüne bakın.

Çalışan bir yerel video örneği için Ad Manager Özel Oluşturma örneğini indirin.

Özel yerel reklam tıklamalarını ve gösterimlerini işleme

Özel yerel reklam biçimlerinde, gösterimleri kaydetmek ve tıklama etkinliklerini SDK'ya raporlamak uygulamanızın sorumluluğundadır.

Gösterimler kaydediliyor

Özel bir yerel reklama ilişkin bir gösterim kaydetmek için karşılık gelen GADCustomNativeAd öğesinde recordImpression yöntemini çağırmanız yeterlidir:

Swift

myCustomNativeAd.recordImpression()

Objective-C

[myCustomNativeAd recordImpression];

Uygulamanız, aynı reklam için yöntemi yanlışlıkla birden fazla kez çağırırsa SDK, tek bir istek için yinelenen gösterimlerin kaydedilmesini engeller.

Raporlama tıklamaları

Öğe görünümünde bir tıklamanın gerçekleştiğini SDK'ya bildirmek için karşılık gelen GADCustomNativeAd öğesinde performClickOnAssetWithKey: yöntemini çağırın ve tıklanan öğenin adını iletin. Örneğin, özel biçiminde "Ana Resim" adlı bir öğeniz varsa ve bu öğeye karşılık gelen görünümle ilgili bir tıklamayı bildirmek istiyorsanız kodunuz aşağıdaki gibi görünür:

Swift

myCustomNativeAd.performClickOnAsset(withKey: "MainImage")

Objective-C

[myCustomNativeAd performClickOnAssetWithKey:@"MainImage"];

Reklamınızla ilişkilendirilen her öğe görünümü için bu yöntemi çağırmanız gerekmediğini unutmayın. Örneğin, "Başlık" adlı başka bir öğeniz olması durumunda, bu öğenin kullanıcı tarafından tıklanmaması veya dokunmaması amaçlanıyorsa uygulamanızın bu görüntüleme için performClickOnAssetWithKey: yöntemini çağırması gerekmez.

Özel tıklama işlemlerine yanıt verme

GADCustomNativeAd, GADNativeAdCustomClickHandler türünde customClickHandler özelliğine sahip

Swift

typealias GADNativeAdCustomClickHandler = (assetID: String) -> Void

Objective-C

typedef void (^GADNativeAdCustomClickHandler)(NSString *assetID);

Tıklanan öğeyi tanımlayan assetID giriş parametresi olarak kabul edilen bir blok (Objective-C) / kapanış (Swift) yöntemidir.

Özel yerel reklama tıklama yapıldığında SDK'dan verilen üç olası yanıt, sırasıyla denenir:

  1. Objective-C'de customClickHandler blokunu veya Swift'te kapatılmayı (ayarlanmadıysa) çağırın.
  2. Reklamın derin bağlantı URL'lerini döngüye alın ve eşleşen uygulamanın bulunduğu ilk URL'yi açın.
  3. Bir tarayıcı açın ve reklamın geleneksel Hedef URL'sine gidin.

customClickHandler mülkü, Objective-C'de bir engelleme ve Swift'te kapatma kabul eder. Bir engelleme veya kapatma ayarlarsanız SDK bunu çalıştırır ve başka bir işlem gerçekleştirmez. Ancak boş değer ayarlarsanız SDK, reklamla kaydedilen derin bağlantıyı ve/veya hedef URL'leri kullanır.

Özel tıklama işleyiciler, uygulamanızın bir tıklamaya yanıt olarak gerçekleştireceği en iyi işlemi (kullanıcı arayüzünü güncellemek, başka bir görünüm denetleyicisi sunmak veya yalnızca tıklamayı günlüğe kaydetmek gibi) kendi başına belirlemesini sağlar. Aşağıda, bir uyarı gösteren bir örnek verilmiştir:

Swift

myCustomNativeAd.customClickHandler = { assetID in
  if assetID == "MainImage" {
    let alertView = UIAlertView(title: "Custom Click",
        message: "You just clicked on the image!",
        delegate: self,
        cancelButtonTitle: "OK")
    alertView.alertViewStyle = .default
    alertView.show()
  }
}
myCustomNativeAd.performClickOnAsset(withKey: "MainImage")

Objective-C

[self.customNativeAd setCustomClickHandler:^(NSString *assetID){
  if ([assetID isEqualToString:@"MainImage"]) {
    [[[UIAlertView alloc] initWithTitle:@"Custom Click"
                                message:@"You just clicked on the image!"
                               delegate:self
                      cancelButtonTitle:@"OK"
                      otherButtonTitles:nil] show];
  }
}];
[self.customNativeAd performClickOnAssetWithKey:@"MainImage"];

Yerel reklam kodunu test etme

Doğrudan satılan reklamlar

Doğrudan satılan doğal reklamların ne olduğunu test etmek istiyorsanız şu Ad Manager reklam birimi kimliğinden yararlanabilirsiniz:

/6499/example/native

Örnek uygulama yükleme ve içerik reklamlarının yanı sıra aşağıdaki öğeleri içeren özel bir yerel reklam biçimi sunacak şekilde yapılandırılmıştır:

  • Başlık (metin)
  • Ana Resim (resim)
  • Başlık (metin)

Yerel dolgu reklamlar

Yerel dolgu reklamların davranışını test etmek için şuAd Manager reklam birimini kullanın:

/6499/example/native-backfill

Reklam Seçenekleri yer paylaşımını içeren örnek uygulama yükleme ve içerik reklamları sunar.

Yayınlamadan önce, gerçek reklam birimi ve biçim kimliklerinize referans vermek için kodunuzu güncellemeyi unutmayın!