Iklan banner adalah iklan persegi panjang yang menempati sebagian tata letak aplikasi. Iklan tetap berada di layar saat pengguna berinteraksi dengan aplikasi, yang ditempatkan di bagian atas atau bawah layar atau sebaris dengan konten saat pengguna men-scroll. Iklan banner dapat dimuat ulang secara otomatis setelah jangka waktu tertentu. Lihat Ringkasan iklan banner untuk informasi selengkapnya.
Panduan ini menunjukkan cara mulai menggunakan iklan banner adaptif anchor, yang memaksimalkan performa dengan mengoptimalkan ukuran iklan untuk setiap perangkat menggunakan lebar iklan yang Anda tentukan.
Banner adaptif anchor
Iklan banner adaptif anchor adalah iklan rasio aspek tetap, bukan iklan ukuran tetap reguler. Rasio aspek ini mirip dengan standar industri 320*50. Setelah menentukan lebar penuh yang tersedia, iklan dengan tinggi optimal untuk lebar tersebut akan ditampilkan. Tinggi optimal tidak berubah untuk berbagai permintaan dari perangkat yang sama, dan tampilan di sekitarnya tidak perlu dipindahkan saat iklan dimuat ulang.
Prasyarat
- Selesaikan Panduan memulai.
Selalu uji dengan iklan percobaan
Saat mem-build dan menguji aplikasi, pastikan Anda menggunakan iklan percobaan, bukan iklan produksi langsung. Jika Anda tidak melakukannya, akun Anda dapat ditangguhkan.
Cara termudah untuk memuat iklan pengujian adalah dengan menggunakan ID unit iklan percobaan khusus untuk banner iOS:
/6499/example/adaptive-banner
API ini telah dikonfigurasi secara khusus agar menampilkan iklan percobaan untuk setiap permintaan, sehingga Anda bebas menggunakannya di aplikasi Anda sendiri saat melakukan coding, menguji, dan men-debug. Pastikan untuk menggantinya dengan ID unit iklan Anda sendiri sebelum memublikasikan aplikasi.
Untuk informasi selengkapnya tentang cara kerja iklan percobaan Mobile Ads SDK, lihat Iklan Percobaan.
Membuat GAMBannerView
Iklan banner ditampilkan dalam objek GAMBannerView
, sehingga langkah pertama untuk mengintegrasikan iklan banner adalah menyertakan GAMBannerView
dalam hierarki tampilan Anda. Hal ini biasanya dilakukan secara terprogram
atau melalui Interface Builder.
Secara terprogram
GAMBannerView
juga dapat dibuat instance-nya secara langsung.
Berikut adalah contoh cara membuat GAMBannerView
,
yang disejajarkan dengan bagian tengah bawah area aman layar:
Swift
import GoogleMobileAds import UIKit class ViewController: UIViewController { var bannerView: GAMBannerView! override func viewDidLoad() { super.viewDidLoad() let viewWidth = view.frame.inset(by: view.safeAreaInsets).width // Here the current interface orientation is used. Use // GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth or // GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth if you prefer to load an ad of a // particular orientation, let adaptiveSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth) bannerView = GAMBannerView(adSize: adaptiveSize) addBannerViewToView(bannerView) } func addBannerViewToView(_ bannerView: GAMBannerView) { bannerView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(bannerView) view.addConstraints( [NSLayoutConstraint(item: bannerView, attribute: .bottom, relatedBy: .equal, toItem: view.safeAreaLayoutGuide, attribute: .bottom, multiplier: 1, constant: 0), NSLayoutConstraint(item: bannerView, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 1, constant: 0) ]) } }
Objective-C
@import GoogleMobileAds; @interface ViewController () @property(nonatomic, strong) GAMBannerView *bannerView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Here safe area is taken into account, hence the view frame is used after the // view has been laid out. CGRect frame = UIEdgeInsetsInsetRect(self.view.frame, self.view.safeAreaInsets); CGFloat viewWidth = frame.size.width; // Here the current interface orientation is used. If the ad is being preloaded // for a future orientation change or different orientation, the function for the // relevant orientation should be used. GADAdSize adaptiveSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth); // In this case, we instantiate the banner with desired ad size. self.bannerView = [[GAMBannerView alloc] initWithAdSize:adaptiveSize]; [self addBannerViewToView:self.bannerView]; } - (void)addBannerViewToView:(UIView *)bannerView { bannerView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:bannerView]; [self.view addConstraints:@[ [NSLayoutConstraint constraintWithItem:bannerView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view.safeAreaLayoutGuide attribute:NSLayoutAttributeBottom multiplier:1 constant:0], [NSLayoutConstraint constraintWithItem:bannerView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1 constant:0] ]]; } @end
Perhatikan bahwa dalam kasus ini, kita tidak memberikan batasan lebar atau tinggi karena ukuran iklan yang diberikan akan memberikan ukuran konten intrinsik untuk banner agar dapat menyesuaikan ukuran tampilan.
Pembuat Antarmuka
GAMBannerView
dapat ditambahkan ke storyboard atau file xib. Saat menggunakan metode ini, pastikan Anda hanya menambahkan batasan posisi pada banner. Misalnya, saat menampilkan banner adaptif di bagian bawah
layar, tetapkan bagian bawah tampilan banner yang sama dengan bagian atas Panduan Tata Letak
Bawah, dan setel titik tengah X sama dengan bagian tengah X superview.
Ukuran iklan banner masih ditetapkan secara terprogram:
Swift
bannerView.adSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth)
Objective-C
self.bannerView.adSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth);
Memuat iklan
Setelah GAMBannerView
diterapkan dan propertinya dikonfigurasi, saatnya memuat iklan. Hal ini dilakukan dengan memanggil loadRequest:
pada
objek
GAMRequest
:
Swift
override func viewDidLoad() { super.viewDidLoad() ... // Set the ad unit ID and view controller that contains the GAMBannerView. bannerView.adUnitID = "/6499/example/adaptive-banner" bannerView.rootViewController = self bannerView.load(GAMRequest()) }
Objective-C
- (void)viewDidLoad { [super viewDidLoad]; ... // Set the ad unit ID and view controller that contains the GAMBannerView. self.bannerView.adUnitID = @"/6499/example/adaptive-banner"; self.bannerView.rootViewController = self; [self.bannerView loadRequest:[GAMRequest request]]; }
Objek GAMRequest mewakili satu permintaan iklan, dan berisi properti untuk hal-hal seperti informasi penargetan.
Jika iklan gagal dimuat, Anda tidak perlu meminta iklan lain secara eksplisit selama Anda telah mengonfigurasi unit iklan untuk dimuat ulang. Google Mobile Ads SDK akan mengikuti kecepatan refresh yang ditentukan di UI Ad Manager. Jika belum mengaktifkan muat ulang, Anda perlu mengajukan permintaan baru.
Peristiwa iklan
Melalui penggunaan GADBannerViewDelegate
, Anda dapat memproses peristiwa siklus proses,
seperti saat iklan ditutup atau pengguna keluar dari aplikasi.
Mendaftar ke peristiwa banner
Untuk mendaftar ke peristiwa iklan banner, tetapkan properti delegate
di GAMBannerView
ke objek yang menerapkan protokol GADBannerViewDelegate
. Secara umum, class yang mengimplementasikan iklan banner
juga bertindak sebagai class delegasi, dalam hal ini, properti delegate
dapat
ditetapkan ke self
.
Swift
import GoogleMobileAds import UIKit class ViewController: UIViewController, GADBannerViewDelegate { var bannerView: GAMBannerView! override func viewDidLoad() { super.viewDidLoad() ... bannerView.delegate = self } }
Objective-C
@import GoogleMobileAds; @interface ViewController () <GADBannerViewDelegate> @property(nonatomic, strong) GAMBannerView *bannerView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; ... self.bannerView.delegate = self; }
Mengimplementasikan peristiwa banner
Setiap metode dalam GADBannerViewDelegate
ditandai sebagai opsional, sehingga Anda
hanya perlu mengimplementasikan metode yang Anda inginkan. Contoh ini mengimplementasikan setiap metode dan mencatat pesan ke konsol:
Swift
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) { print("bannerViewDidReceiveAd") } func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) { print("bannerView:didFailToReceiveAdWithError: \(error.localizedDescription)") } func bannerViewDidRecordImpression(_ bannerView: GADBannerView) { print("bannerViewDidRecordImpression") } func bannerViewWillPresentScreen(_ bannerView: GADBannerView) { print("bannerViewWillPresentScreen") } func bannerViewWillDismissScreen(_ bannerView: GADBannerView) { print("bannerViewWillDIsmissScreen") } func bannerViewDidDismissScreen(_ bannerView: GADBannerView) { print("bannerViewDidDismissScreen") }
Objective-C
- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView { NSLog(@"bannerViewDidReceiveAd"); } - (void)bannerView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(NSError *)error { NSLog(@"bannerView:didFailToReceiveAdWithError: %@", [error localizedDescription]); } - (void)bannerViewDidRecordImpression:(GADBannerView *)bannerView { NSLog(@"bannerViewDidRecordImpression"); } - (void)bannerViewWillPresentScreen:(GADBannerView *)bannerView { NSLog(@"bannerViewWillPresentScreen"); } - (void)bannerViewWillDismissScreen:(GADBannerView *)bannerView { NSLog(@"bannerViewWillDismissScreen"); } - (void)bannerViewDidDismissScreen:(GADBannerView *)bannerView { NSLog(@"bannerViewDidDismissScreen"); }
Lihat contoh Delegasi Iklan untuk implementasi metode delegasi banner di aplikasi iOS API Demo.
Kasus penggunaan
Berikut beberapa contoh kasus penggunaan untuk metode peristiwa iklan ini.
Menambahkan banner pada hierarki tampilan setelah iklan diterima
Sebaiknya tunda penambahan GAMBannerView
ke
hierarki tampilan hingga iklan diterima. Anda dapat melakukannya dengan memproses peristiwa bannerViewDidReceiveAd:
:
Swift
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) { // Add banner to view and add constraints as above. addBannerViewToView(bannerView) }
Objective-C
- (void)bannerViewDidReceiveAd:(GAMBannerView *)bannerView { // Add bannerView to view and add constraints as above. [self addBannerViewToView:self.bannerView]; }
Menganimasikan iklan banner
Anda juga dapat menggunakan peristiwa bannerViewDidReceiveAd:
untuk menganimasikan iklan banner setelah ditampilkan, seperti yang ditunjukkan dalam contoh berikut:
Swift
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) { bannerView.alpha = 0 UIView.animate(withDuration: 1, animations: { bannerView.alpha = 1 }) }
Objective-C
- (void)bannerViewDidReceiveAd:(GAMBannerView *)bannerView { bannerView.alpha = 0; [UIView animateWithDuration:1.0 animations:^{ bannerView.alpha = 1; }]; }
Menjeda dan melanjutkan aplikasi
Protokol GADBannerViewDelegate
memiliki metode untuk memberi tahu Anda tentang peristiwa, seperti
saat klik menyebabkan overlay ditampilkan atau ditutup. Jika Anda ingin melacak apakah peristiwa ini disebabkan oleh iklan, daftarlah untuk metode GADBannerViewDelegate
ini.
Untuk menangkap semua jenis presentasi overlay atau panggilan browser eksternal, bukan
hanya yang berasal dari klik iklan, sebaiknya aplikasi Anda memproses
metode yang setara di UIViewController
atau UIApplication
. Berikut adalah tabel yang menunjukkan metode iOS setara yang dipanggil pada saat yang sama dengan metode GADBannerViewDelegate
:
Metode GADBannerViewDelegate | Metode iOS |
---|---|
bannerViewWillPresentScreen: |
viewWillDisappear: UIViewController |
bannerViewWillDismissScreen: |
viewWillAppear: UIViewController |
bannerViewDidDismissScreen: |
viewDidAppear: UIViewController |
Penghitungan tayangan manual
Anda dapat mengirim ping tayangan secara manual ke Ad Manager jika memiliki kondisi
khusus terkait kapan tayangan harus dicatat. Hal ini dapat dilakukan dengan terlebih dahulu
mengaktifkan GAMBannerView
untuk tayangan manual sebelum memuat iklan:
Swift
bannerView.enableManualImpressions = true
Objective-C
self.bannerView.enableManualImpressions = YES;
Saat menentukan bahwa iklan telah berhasil ditampilkan dan ditampilkan di layar, Anda dapat mengaktifkan tayangan secara manual:
Swift
bannerView.recordImpression()
Objective-C
[self.bannerView recordImpression];
Peristiwa aplikasi
Peristiwa aplikasi memungkinkan Anda membuat iklan yang dapat mengirimkan pesan ke kode aplikasi mereka. Selanjutnya, aplikasi dapat mengambil tindakan berdasarkan pesan tersebut.
Anda dapat memproses peristiwa aplikasi khusus Ad Manager menggunakan GADAppEventDelegate
.
Peristiwa ini dapat terjadi kapan saja selama siklus proses iklan, bahkan sebelum
bannerViewDidReceiveAd:
objek GADBannerViewDelegate
dipanggil.
Swift
// Implement your app event within this method. The delegate will be // notified when the SDK receives an app event message from the ad. // Called when the banner receives an app event. optional public func bannerView(_ banner: GAMBannerView, didReceiveAppEvent name: String, withInfo info: String?)
Objective-C
// Implement your app event within this method. The delegate will be // notified when the SDK receives an app event message from the ad. @optional // Called when the banner receives an app event. - (void)bannerView:(GAMBannerView *)banner didReceiveAppEvent:(NSString *)name withInfo:(NSString *)info;
Metode peristiwa aplikasi Anda dapat diterapkan di pengontrol tampilan:
Swift
import GoogleMobileAds class ViewController: UIViewController, GADAppEventDelegate { }
Objective-C
@import GoogleMobileAds; @interface ViewController : UIViewController <GADAppEventDelegate> { } @end
Jangan lupa untuk menetapkan delegasi menggunakan properti appEventDelegate
sebelum membuat permintaan untuk iklan.
Swift
bannerView.appEventDelegate = self
Objective-C
self.bannerView.appEventDelegate = self;
Berikut adalah contoh yang menunjukkan cara mengubah warna latar belakang aplikasi dengan menentukan warna melalui peristiwa aplikasi:
Swift
func bannerView(_ banner: GAMBannerView, didReceiveAppEvent name: String, withInfo info: String?) { if name == "color" { guard let info = info else { return } switch info { case "green": // Set background color to green. view.backgroundColor = UIColor.green case "blue": // Set background color to blue. view.backgroundColor = UIColor.blue default: // Set background color to black. view.backgroundColor = UIColor.black } } }
Objective-C
- (void)bannerView:(GAMBannerView *)banner didReceiveAppEvent:(NSString *)name withInfo:(NSString *)info { if ([name isEqual:@"color"]) { if ([info isEqual:@"green"]) { // Set background color to green. self.view.backgroundColor = [UIColor greenColor]; } else if ([info isEqual:@"blue"]) { // Set background color to blue. self.view.backgroundColor = [UIColor blueColor]; } else // Set background color to black. self.view.backgroundColor = [UIColor blackColor]; } } }
Dan, berikut adalah materi iklan yang sesuai yang mengirimkan pesan peristiwa aplikasi berwarna ke
appEventDelegate
:
<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>
Lihat contoh Peristiwa Aplikasi Ad Manager untuk implementasi peristiwa aplikasi di aplikasi iOS API Demo.
Referensi lainnya
Contoh di GitHub
- Contoh iklan banner adaptif anchor: Swift | Objective-C
- Demo fitur lanjutan: Swift | Objective-C
Langkah berikutnya
Banner yang dapat diciutkan
Iklan banner yang dapat diciutkan adalah iklan banner yang awalnya ditampilkan sebagai overlay yang lebih besar, dengan tombol untuk menciutkan iklan ke ukuran yang lebih kecil. Pertimbangkan untuk menggunakannya guna lebih mengoptimalkan performa Anda. Lihat iklan banner yang dapat diciutkan untuk detail selengkapnya.
Banner adaptif inline
Banner adaptif inline memiliki ukuran banner yang lebih besar dan lebih tinggi dibandingkan dengan banner adaptif anchor. Tingginya bervariasi, dan bisa setinggi layar perangkat. Banner adaptif inline direkomendasikan daripada iklan banner adaptif anchor untuk aplikasi yang menempatkan iklan banner dalam konten yang dapat di-scroll. Lihat banner adaptif inline untuk detail selengkapnya.