Format Iklan Native Khusus

Format iklan kustom

Seperti format iklan native yang ditentukan sistem, format iklan native kustom dimuat menggunakan objek GADAdLoader. Menyertakan konstanta GADAdLoaderAdTypeCustomNative dalam array adTypes saat menginisialisasi GADAdLoader akan mengonfigurasinya untuk meminta format native kustom saat memuat iklan.

GADCustomNativeAdLoaderDelegate

Protokol untuk memuat format kustom memiliki dua metode. Yang pertama digunakan oleh GADAdLoader untuk mencari tahu ID format mana yang harus diminta:

Swift

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

Objective-C

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

Setiap format iklan bawaan khusus memiliki ID format yang sesuai yang mengidentifikasinya. Saat metode ini dipanggil, aplikasi Anda harus menampilkan array yang berisi ID format iklan yang disiapkan untuk ditampilkan.

Pesan kedua dikirim saat iklan native kustom telah dimuat, sama seperti yang digunakan untuk format yang ditentukan sistem:

Swift

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

Objective-C

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

ID Format

ID format yang digunakan untuk merujuk secara unik ke format iklan native kustom dapat ditemukan di Ad Manager UI pada bagian Native di dalam dropdown Penayangan:

Setiap ID format iklan native kustom muncul di samping namanya. Dengan mengklik salah satu nama, Anda akan diarahkan ke layar detail yang menampilkan informasi tentang kolom format:

Dari sini, masing-masing kolom dapat ditambahkan, diedit, dan dihapus. Catat Nama setiap aset. Nama adalah kunci yang digunakan untuk mendapatkan data setiap aset saat menampilkan format iklan native khusus.

Menampilkan format iklan native kustom

Format iklan native kustom berbeda dengan format yang ditentukan sistem, karena penayang dapat menentukan daftar asetnya sendiri yang membentuk iklan. Oleh karena itu, proses untuk menampilkan iklan native kustom berbeda dengan proses untuk format yang ditentukan sistem dalam beberapa hal:

  1. Karena GADCustomNativeAd ditujukan untuk menangani salah satu format iklan native kustom yang Anda buat, aplikasi ini tidak memiliki pengakses aset bernama. Sebagai gantinya, class ini menawarkan metode seperti imageForKey: dan stringForKey: yang menggunakan nama kolom sebagai argumen.
  2. Tidak ada class tampilan iklan khusus seperti GADNativeAdView untuk digunakan dengan GADCustomNativeAd. Anda bebas menggunakan tampilan apa pun yang masuk akal untuk pengalaman pengguna Anda.
  3. Karena tidak ada kelas tampilan iklan khusus, Anda tidak perlu mendaftarkan tampilan apa pun yang digunakan untuk menampilkan aset iklan.

Berikut contoh tampilan iklan yang mampu menampilkan iklan native kustom sederhana:

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

MySimpleNativeAdView.m (kutipan)

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"];
}
...

Video native untuk format iklan native kustom

Saat membuat format kustom, Anda memiliki opsi untuk membuat format tersebut memenuhi syarat untuk video.

Dalam implementasi aplikasi, Anda dapat menggunakan properti GADCustomNativeAd.mediaView untuk mendapatkan tampilan video. Kemudian tambahkan tampilan ini ke hierarki tampilan. Jika iklan tidak memiliki konten video, buat rencana alternatif untuk menampilkan iklan tanpa video.

Contoh di bawah ini memeriksa apakah iklan memiliki konten video, dan menampilkan gambar jika video tidak tersedia:

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]];
}
...

Lihat GADVideoController untuk informasi selengkapnya tentang cara menyesuaikan pengalaman video iklan bawaan khusus.

Download contoh Rendering Kustom Ad Manager untuk mengetahui contoh kerja cara kerja video native.

Menangani klik dan tayangan iklan native kustom

Untuk format iklan native kustom, aplikasi Anda bertanggung jawab mencatat tayangan dan melaporkan peristiwa klik ke SDK.

Mencatat tayangan

Untuk mencatat tayangan iklan native kustom, cukup panggil metode recordImpression pada GADCustomNativeAd yang sesuai:

Swift

myCustomNativeAd.recordImpression()

Objective-C

[myCustomNativeAd recordImpression];

SDK mencegah tayangan duplikat direkam untuk satu permintaan, jika aplikasi Anda tidak sengaja memanggil metode tersebut beberapa kali untuk iklan yang sama.

Melaporkan klik

Untuk melaporkan ke SDK bahwa telah terjadi klik pada tampilan aset, panggil metode performClickOnAssetWithKey: pada GADCustomNativeAd yang sesuai dan teruskan nama aset yang diklik. Misalnya, jika Anda memiliki aset dalam format kustom yang disebut "MainImage" dan ingin melaporkan klik pada tampilan yang terkait dengan aset tersebut, kode Anda akan terlihat seperti ini:

Swift

myCustomNativeAd.performClickOnAsset(withKey: "MainImage")

Objective-C

[myCustomNativeAd performClickOnAssetWithKey:@"MainImage"];

Perhatikan bahwa Anda tidak perlu memanggil metode ini untuk setiap tampilan aset yang terkait dengan iklan. Jika Anda memiliki aset lain yang disebut "Teks", misalnya, yang dimaksudkan untuk ditampilkan tetapi tidak diklik atau diketuk oleh pengguna, aplikasi Anda tidak perlu memanggil performClickOnAssetWithKey: untuk tampilan tersebut.

Merespons tindakan klik kustom

GADCustomNativeAd memiliki properti customClickHandler yang berjenis GADNativeAdCustomClickHandler

Swift

typealias GADNativeAdCustomClickHandler = (assetID: String) -> Void

Objective-C

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

Ini adalah blok (Objective-C) / closure (Swift) yang menerima assetID sebagai parameter input, yang mengidentifikasi aset yang telah diklik.

Ketika klik dilakukan pada iklan bawaan khusus, ada tiga kemungkinan respons dari SDK, yang dicoba dalam urutan ini:

  1. Panggil blok customClickHandler di Objective-C atau tutup di Swift, jika ada yang ditetapkan.
  2. Lakukan loop melalui URL Deeplink iklan dan buka URL pertama tempat aplikasi yang cocok dapat ditemukan.
  3. Buka browser dan navigasikan ke URL Tujuan tradisional iklan.

Properti customClickHandler menerima pemblokiran di Objective-C dan penutupan di Swift. Jika Anda menetapkan pemblokiran atau penutupan, SDK akan menjalankannya dan tidak akan melakukan tindakan lebih lanjut. Namun, jika Anda menetapkan nilai nol, SDK akan kembali ke deeplink dan/atau URL tujuan yang terdaftar dengan iklan.

Pengendali klik kustom memungkinkan aplikasi Anda memutuskan sendiri tindakan terbaik yang akan diambil sebagai respons terhadap klik, apakah mengupdate UI, menampilkan pengontrol tampilan lain, atau hanya mencatat klik ke dalam log. Berikut ini contoh yang menampilkan pemberitahuan:

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"];

Menguji kode iklan native

Iklan yang dijual langsung

Jika ingin menguji tampilan iklan native yang dijual langsung, Anda dapat menggunakan Ad Manager ID unit iklan ini:

/6499/example/native

Konfigurasi ini dikonfigurasi untuk menayangkan iklan konten dan instal aplikasi contoh, serta format iklan native khusus dengan aset berikut:

  • Judul (teks)
  • MainImage (gambar)
  • Teks (teks)

Iklan pengisian ulang native

Untuk menguji perilaku iklan isi ulang native, gunakan Ad Manager unit iklan ini:

/6499/example/native-backfill

Aplikasi ini akan menayangkan contoh iklan instal aplikasi dan konten yang menyertakan overlay AdChoices.

Jangan lupa untuk memperbarui kode Anda agar merujuk ke unit iklan dan ID format yang sebenarnya sebelum menayangkan iklan.