Iklan banner adalah iklan persegi panjang yang menempati sebagian tata letak aplikasi. Mereka tetap berada di layar saat pengguna berinteraksi dengan aplikasi, baik ditempatkan di bagian atas atau bawah layar, atau sebaris dengan konten saat pengguna men-scroll. Spanduk iklan dapat diperbarui secara otomatis setelah jangka waktu tertentu. Lihat Ringkasan iklan banner untuk informasi selengkapnya.
Panduan ini menunjukkan cara mulai menggunakan banner adaptif anchor iklan, yang memaksimalkan performa dengan mengoptimalkan ukuran iklan untuk setiap perangkat yang menggunakan lebar iklan yang Anda tentukan.
Banner adaptif anchor
Iklan banner adaptif anchor adalah iklan dengan rasio aspek tetap, bukan iklan biasa iklan berukuran tetap. Rasio aspeknya mirip dengan standar industri 320x50. Satu kali Anda menetapkan lebar penuh yang tersedia, iklan dengan tinggi optimal akan ditampilkan selebar itu. Tinggi optimal tidak berubah di seluruh 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 pengujian khusus kami untuk banner iOS:
ca-app-pub-3940256099942544/2435281174
URL ini telah dikonfigurasi secara khusus agar menampilkan iklan percobaan untuk setiap permintaan, dan Anda bebas untuk menggunakannya di aplikasi Anda sendiri saat melakukan {i>coding<i}, pengujian, dan {i>debugging<i}. Pastikan saja Anda menggantinya dengan ID unit iklan Anda sendiri sebelum memublikasikan aplikasi.
Untuk informasi selengkapnya tentang cara kerja iklan percobaan Mobile Ads SDK, lihat Menguji Google Ads.
Membuat GADBannerView
Iklan banner ditampilkan di GADBannerView
sehingga langkah pertama untuk mengintegrasikan iklan banner adalah menyertakan GADBannerView
dalam hierarki tampilan Anda. Hal ini biasanya dilakukan secara terprogram atau
melalui Interface Builder.
Secara terprogram
GADBannerView
juga dapat dibuat instance-nya secara langsung.
Contoh berikut membuat GADBannerView
:
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController {
var bannerView: GADBannerView!
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 = GADBannerView(adSize: adaptiveSize)
addBannerViewToView(bannerView)
}
func addBannerViewToView(_ bannerView: GADBannerView) {
bannerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bannerView)
// This example doesn't give width or height constraints, as the provided
// ad size gives the banner an intrinsic content size to size the view.
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)
])
}
}
SwiftUI
Untuk menggunakan GADBannerView
, buat UIViewRepresentable
:
private struct BannerView: UIViewRepresentable {
let adSize: GADAdSize
init(_ adSize: GADAdSize) {
self.adSize = adSize
}
func makeUIView(context: Context) -> UIView {
// Wrap the GADBannerView in a UIView. GADBannerView automatically reloads a new ad when its
// frame size changes; wrapping in a UIView container insulates the GADBannerView from size
// changes that impact the view returned from makeUIView.
let view = UIView()
view.addSubview(context.coordinator.bannerView)
return view
}
func updateUIView(_ uiView: UIView, context: Context) {
context.coordinator.bannerView.adSize = adSize
}
func makeCoordinator() -> BannerCoordinator {
return BannerCoordinator(self)
}
Untuk mengelola inisialisasi dan perilaku GADBannerView
, buat
Coordinator
:
class BannerCoordinator: NSObject, GADBannerViewDelegate {
private(set) lazy var bannerView: GADBannerView = {
let banner = GADBannerView(adSize: parent.adSize)
banner.adUnitID = "ca-app-pub-3940256099942544/2435281174"
banner.load(GADRequest())
banner.delegate = self
return banner
}()
let parent: BannerView
init(_ parent: BannerView) {
self.parent = parent
}
Untuk mendapatkan lebar tampilan, gunakan GeometryReader
. Kelas ini
menghitung ukuran iklan yang sesuai untuk orientasi perangkat saat ini. frame
ditetapkan ke tinggi yang dihitung dari ukuran iklan.
var body: some View {
GeometryReader { geometry in
let adSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(geometry.size.width)
VStack {
Spacer()
BannerView(adSize)
.frame(height: adSize.size.height)
}
}
Objective-C
Perhatikan bahwa dalam hal ini kita tidak memberikan batasan lebar atau tinggi, karena ukuran iklan yang diberikan akan memberikan ukuran konten intrinsik ke banner ini untuk menyesuaikan ukuran {i>view<i}.
@import GoogleMobileAds;
@interface ViewController ()
@property(nonatomic, strong) GADBannerView *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 = [[GADBannerView alloc] initWithAdSize:adaptiveSize];
[self addBannerViewToView:self.bannerView];
}
- (void)addBannerViewToView:(UIView *)bannerView {
bannerView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:bannerView];
// This example doesn't give width or height constraints, as the provided
// ad size gives the banner an intrinsic content size to size the view.
[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
Interface Builder
Anda dapat menambahkan GADBannerView
ke file storyboard atau xib. Saat menggunakannya
pastikan Anda hanya menambahkan batasan posisi pada banner. Misalnya,
saat menampilkan banner adaptif di bagian bawah layar, tetapkan bagian bawah
tampilan banner sama dengan bagian atas Panduan Tata Letak Bawah, dan tetapkan
batasan
centerX
sama dengan centerX
superview.
Ukuran iklan banner masih ditetapkan secara terprogram:
Swift
bannerView.adSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth)
Objective-C
self.bannerView.adSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth);
Memuat iklan
Setelah GADBannerView
diterapkan dan propertinya
dikonfigurasi, sekarang saatnya memuat iklan. Hal ini dilakukan dengan memanggil loadRequest:
pada
GADRequest
:
Swift
override func viewDidLoad() {
super.viewDidLoad()
// Set the ad unit ID and view controller that contains the GADBannerView.
bannerView.adUnitID = "ca-app-pub-3940256099942544/2435281174"
bannerView.rootViewController = self
bannerView.load(GADRequest())
}
SwiftUI
banner.adUnitID = "ca-app-pub-3940256099942544/2435281174"
banner.load(GADRequest())
Objective-C
- (void)viewDidLoad {
[super viewDidLoad];
// Set the ad unit ID and view controller that contains the GADBannerView.
self.bannerView.adUnitID = @"ca-app-pub-3940256099942544/2435281174";
self.bannerView.rootViewController = self;
[self.bannerView loadRequest:[GADRequest request]];
}
Objek GADRequest 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 Anda tentukan di UI AdMob. 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 untuk peristiwa banner
Untuk mendaftar ke peristiwa iklan banner, tetapkan properti delegate
di
GADBannerView
ke objek yang mengimplementasikan
Protokol GADBannerViewDelegate
. Umumnya, kelas yang menerapkan banner
iklan juga berfungsi sebagai class delegasi, yang dalam hal ini, properti delegate
dapat
ditetapkan ke self
.
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController, GADBannerViewDelegate {
var bannerView: GADBannerView!
override func viewDidLoad() {
super.viewDidLoad()
// ...
bannerView.delegate = self
}
}
SwiftUI
banner.delegate = self
Objective-C
@import GoogleMobileAds;
@interface ViewController () <GADBannerViewDelegate>
@property(nonatomic, strong) GADBannerView *bannerView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// ...
self.bannerView.delegate = self;
}
Mengimplementasikan peristiwa banner
Setiap metode di 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 ke hierarki tampilan setelah iklan diterima
Sebaiknya Anda menunda penambahan GADBannerView
ke
hierarki tampilan hingga setelah iklan diterima. Anda dapat melakukan ini
dengan mendengarkan
untuk peristiwa bannerViewDidReceiveAd:
:
Swift
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {
// Add banner to view and add constraints.
addBannerViewToView(bannerView)
}
Objective-C
- (void)bannerViewDidReceiveAd:(GADBannerView *)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 sekali
itu 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:(GADBannerView *)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
seperti saat sebuah klik menyebabkan overlay ditampilkan atau ditutup. Jika Anda ingin
lacak apakah peristiwa ini disebabkan oleh iklan, daftar untuk
Metode GADBannerViewDelegate
.
Untuk menangkap semua jenis presentasi overlay atau panggilan browser eksternal, bukan
hanya yang berasal dari klik iklan, aplikasi Anda akan lebih baik dalam mendengarkan
metode yang setara di UIViewController
atau UIApplication
. Berikut adalah tabel
yang menampilkan metode iOS yang setara yang dipanggil secara bersamaan dengan
metode GADBannerViewDelegate
:
Metode GADBannerViewDelegate | Metode iOS |
---|---|
bannerViewWillPresentScreen: |
viewWillDisappear: UIViewController |
bannerViewWillDismissScreen: |
viewWillAppear: UIViewController |
bannerViewDidDismissScreen: |
viewDidAppear: UIViewController |
Referensi lainnya
Contoh di GitHub
- Contoh iklan banner adaptif anchor: Swift | SwiftUI | 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 untuk lebih mengoptimalkan performa. Lihat iklan banner yang dapat diciutkan untuk detail selengkapnya.
Banner adaptif inline
Banner adaptif inline adalah banner yang lebih besar dan lebih tinggi dibandingkan banner adaptif anchor. Banner ini memiliki tinggi variabel, dan dapat 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 mengetahui detail selengkapnya.