Panduan ini menunjukkan praktik terbaik tentang cara membuat kode aplikasi untuk merender iklan dengan benar di iPhone X.
Prasyarat
- Impor Google Mobile Ads SDK versi 7.26.0 atau yang lebih tinggi, baik secara terpisah atau sebagai bagian dari Firebase.
Iklan banner
Iklan banner harus ditempatkan di "Area Aman" agar tidak terhalang oleh sudut membulat, wadah sensor, dan indikator Beranda. Di halaman ini, Anda akan menemukan contoh cara menambahkan batasan untuk memosisikan banner di bagian atas atau bawah Area Aman.
Storyboard/Interface Builder
Jika aplikasi Anda menggunakan Interface Builder, pastikan Anda telah mengaktifkan panduan tata letak Safe Area. Untuk melakukannya, Anda harus menjalankan Xcode 9+ dan menargetkan iOS 9+.
Buka file Interface Builder dan klik scene pengontrol tampilan. Anda akan melihat opsi Interface Builder Document di sebelah kanan. Centang Use Safe Area Layout Guides dan pastikan Anda mem-build untuk iOS 9.0 dan yang lebih baru sebagai minimum.

Sebaiknya batasi banner ke ukuran yang diperlukan menggunakan batasan lebar dan tinggi.

Sekarang Anda dapat menyelaraskan banner ke bagian atas Area Aman dengan membatasi properti Atas GADBannerView ke bagian atas Area Aman:

Demikian pula, Anda dapat menyelaraskan banner ke bagian bawah Area Aman dengan membatasi properti Bottom GADBannerView ke bagian bawah area aman:

Batasan Anda sekarang akan terlihat seperti screenshot di bawah (ukuran/posisi dapat bervariasi):

ViewController
Berikut adalah cuplikan kode pengontrol tampilan sederhana yang melakukan hal minimum yang diperlukan untuk menampilkan banner di GADBannerView seperti yang dikonfigurasi di storyboard di atas:
Swift
class ViewController: UIViewController { /// The banner view. @IBOutlet var bannerView: BannerView! override func viewDidLoad() { super.viewDidLoad() // Replace this ad unit ID with your own ad unit ID. bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716" bannerView.rootViewController = self bannerView.load(Request()) } }
Objective-C
@interface ViewController() @property(nonatomic, strong) IBOutlet GADBannerView *bannerView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Replace this ad unit ID with your own ad unit ID. self.bannerView.adUnitID = @"ca-app-pub-3940256099942544/2934735716"; self.bannerView.rootViewController = self; GADRequest *request = [GADRequest request]; [self.bannerView loadRequest:request]; }
Menyelaraskan banner ke tepi area aman
Jika Anda ingin memiliki banner yang rata kiri atau kanan, batasi tepi kiri/kanan banner ke tepi kiri/kanan area aman, bukan tepi kiri/kanan superview.
Jika Anda mengaktifkan Use Safe Area Layout Guides, builder antarmuka akan menggunakan tepi area aman secara default saat menambahkan batasan ke tampilan.
Terprogram
Jika aplikasi Anda membuat iklan banner secara terprogram, Anda dapat menentukan batasan dan memosisikan iklan banner dalam kode. Contoh ini menunjukkan cara membatasi banner agar berada di tengah secara horizontal di bagian bawah Area Aman:
Swift
class ViewController: UIViewController { var bannerView: BannerView! override func viewDidLoad() { super.viewDidLoad() // Instantiate the banner view with your desired banner size. bannerView = BannerView(adSize: AdSizeBanner) addBannerViewToView(bannerView) bannerView.rootViewController = self // Set the ad unit ID to your own ad unit ID here. bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716" bannerView.load(Request()) } func addBannerViewToView(_ bannerView: UIView) { bannerView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(bannerView) if #available(iOS 11.0, *) { positionBannerAtBottomOfSafeArea(bannerView) } else { positionBannerAtBottomOfView(bannerView) } } @available (iOS 11, *) func positionBannerAtBottomOfSafeArea(_ bannerView: UIView) { // Position the banner. Stick it to the bottom of the Safe Area. // Centered horizontally. let guide: UILayoutGuide = view.safeAreaLayoutGuide NSLayoutConstraint.activate( [bannerView.centerXAnchor.constraint(equalTo: guide.centerXAnchor), bannerView.bottomAnchor.constraint(equalTo: guide.bottomAnchor)] ) } func positionBannerAtBottomOfView(_ bannerView: UIView) { // Center the banner horizontally. view.addConstraint(NSLayoutConstraint(item: bannerView, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 1, constant: 0)) // Lock the banner to the top of the bottom layout guide. view.addConstraint(NSLayoutConstraint(item: bannerView, attribute: .bottom, relatedBy: .equal, toItem: self.bottomLayoutGuide, attribute: .top, multiplier: 1, constant: 0)) } }
Objective-C
@interface ViewController() @property(nonatomic, strong) GADBannerView *bannerView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Instantiate the banner view with your desired banner size. self.bannerView = [[GADBannerView alloc] initWithAdSize:GADAdSizeBanner]; [self addBannerViewToView:self.bannerView]; // Replace this ad unit ID with your own ad unit ID. self.bannerView.adUnitID = @"ca-app-pub-3940256099942544/2934735716"; self.bannerView.rootViewController = self; GADRequest *request = [GADRequest request]; [self.bannerView loadRequest:request]; } #pragma mark - view positioning -(void)addBannerViewToView:(UIView *_Nonnull)bannerView { self.bannerView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:self.bannerView]; if (@available(ios 11.0, *)) { [self positionBannerViewAtBottomOfSafeArea:bannerView]; } else { [self positionBannerViewAtBottomOfView:bannerView]; } } - (void)positionBannerViewAtBottomOfSafeArea:(UIView *_Nonnull)bannerView NS_AVAILABLE_IOS(11.0) { // Position the banner. Stick it to the bottom of the Safe Area. // Centered horizontally. UILayoutGuide *guide = self.view.safeAreaLayoutGuide; [NSLayoutConstraint activateConstraints:@[ [bannerView.centerXAnchor constraintEqualToAnchor:guide.centerXAnchor], [bannerView.bottomAnchor constraintEqualToAnchor:guide.bottomAnchor] ]]; } - (void)positionBannerViewAtBottomOfView:(UIView *_Nonnull)bannerView { [self.view addConstraint:[NSLayoutConstraint constraintWithItem:bannerView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1 constant:0]]; [self.view addConstraint:[NSLayoutConstraint constraintWithItem:bannerView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.bottomLayoutGuide attribute:NSLayoutAttributeTop multiplier:1 constant:0]]; } @end
Teknik di atas dapat dengan mudah digunakan untuk membatasi ke bagian atas area aman dengan mengubah atribut dan anchor yang digunakan.
Banner cerdas
Jika Anda menggunakan banner smart, terutama dalam mode lanskap, sebaiknya gunakan batasan untuk menyelaraskan tepi banner dengan tepi kiri dan kanan area aman.
Di interface builder, hal ini didukung kembali ke iOS 9 dengan mencentang opsi Use Safe Area Layout Guides seperti yang diuraikan di atas.
Dalam kode, Anda harus membuat batasan tepi relatif terhadap panduan tata letak area aman jika tersedia. Berikut adalah cuplikan kode yang menambahkan tampilan banner ke tampilan dan membatasinya ke bagian bawah tampilan, dengan lebar penuh:
Swift
func addBannerViewToView(_ bannerView: BannerView) { bannerView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(bannerView) if #available(iOS 11.0, *) { // In iOS 11, we need to constrain the view to the safe area. positionBannerViewFullWidthAtBottomOfSafeArea(bannerView) } else { // In lower iOS versions, safe area is not available so we use // bottom layout guide and view edges. positionBannerViewFullWidthAtBottomOfView(bannerView) } } // MARK: - view positioning @available (iOS 11, *) func positionBannerViewFullWidthAtBottomOfSafeArea(_ bannerView: UIView) { // Position the banner. Stick it to the bottom of the Safe Area. // Make it constrained to the edges of the safe area. let guide = view.safeAreaLayoutGuide NSLayoutConstraint.activate([ guide.leftAnchor.constraint(equalTo: bannerView.leftAnchor), guide.rightAnchor.constraint(equalTo: bannerView.rightAnchor), guide.bottomAnchor.constraint(equalTo: bannerView.bottomAnchor) ]) } func positionBannerViewFullWidthAtBottomOfView(_ bannerView: UIView) { view.addConstraint(NSLayoutConstraint(item: bannerView, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1, constant: 0)) view.addConstraint(NSLayoutConstraint(item: bannerView, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1, constant: 0)) view.addConstraint(NSLayoutConstraint(item: bannerView, attribute: .bottom, relatedBy: .equal, toItem: bottomLayoutGuide, attribute: .top, multiplier: 1, constant: 0)) }
Objective-C
- (void)addBannerViewToView:(UIView *)bannerView { bannerView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:bannerView]; if (@available(ios 11.0, *)) { // In iOS 11, we need to constrain the view to the safe area. [self positionBannerViewFullWidthAtBottomOfSafeArea:bannerView]; } else { // In lower iOS versions, safe area is not available so we use // bottom layout guide and view edges. [self positionBannerViewFullWidthAtBottomOfView:bannerView]; } } #pragma mark - view positioning - (void)positionBannerViewFullWidthAtBottomOfSafeArea:(UIView *_Nonnull)bannerView NS_AVAILABLE_IOS(11.0) { // Position the banner. Stick it to the bottom of the Safe Area. // Make it constrained to the edges of the safe area. UILayoutGuide *guide = self.view.safeAreaLayoutGuide; [NSLayoutConstraint activateConstraints:@[ [guide.leftAnchor constraintEqualToAnchor:bannerView.leftAnchor], [guide.rightAnchor constraintEqualToAnchor:bannerView.rightAnchor], [guide.bottomAnchor constraintEqualToAnchor:bannerView.bottomAnchor] ]]; } - (void)positionBannerViewFullWidthAtBottomOfView:(UIView *_Nonnull)bannerView { [self.view addConstraint:[NSLayoutConstraint constraintWithItem:bannerView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1 constant:0]]; [self.view addConstraint:[NSLayoutConstraint constraintWithItem:bannerView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]]; [self.view addConstraint:[NSLayoutConstraint constraintWithItem:bannerView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.bottomLayoutGuide attribute:NSLayoutAttributeTop multiplier:1 constant:0]]; }
Iklan native
Jika aplikasi Anda menyematkan iklan native ke bagian atas atau bawah layar, prinsip yang sama berlaku untuk iklan native seperti halnya untuk iklan banner.
Perbedaan utamanya adalah, alih-alih menambahkan batasan ke GADBannerView, Anda harus
menambahkan batasan ke GADNativeAdView (atau tampilan yang berisi
iklan) untuk mematuhi panduan tata letak Area Aman. Untuk tampilan native,
sebaiknya berikan batasan ukuran yang lebih eksplisit.
Iklan interstisial dan reward
Mulai Versi 7.26.0, Google Mobile Ads SDK sepenuhnya mendukung format iklan interstisial dan reward untuk iPhone X.