Banneranzeigen einrichten

Banneranzeigen sind rechteckige Anzeigen, die einen Teil der App-Oberfläche einnehmen. Adaptive Ankerbanner sind immer auf dem Bildschirm zu sehen und oben oder unten auf dem Bildschirm verankert. Sie haben eine maximale Höhe von 20% der Bildschirmgröße bzw. 150 Pixel. Verwenden Sie adaptive Banner, um die Anzeigengröße für jedes Gerät zu optimieren.

In diesem Leitfaden wird beschrieben, wie Sie eine verankerte adaptive Banneranzeige in eine iOS-App laden.

Vorbereitung

Bevor Sie fortfahren, richten Sie Google Mobile Ads SDK ein.

Immer Testanzeigen verwenden

Verwenden Sie beim Entwickeln und Testen Ihrer Apps Testanzeigen anstelle von Live-Anzeigen. Andernfalls kann es zu einer Kontosperrung kommen.

Testanzeigen lassen sich unter iOS am einfachsten mit unserer speziellen Test-Anzeigenblock-ID für Banner laden:

ca-app-pub-3940256099942544/2435281174

Sie wurde speziell konfiguriert, um für jede Anfrage Testanzeigen zurückzugeben. Sie können sie also beim Programmieren, Testen und Debuggen in Ihren eigenen Apps verwenden. Denken Sie daran, die ID vor der Veröffentlichung Ihrer App durch Ihre eigene Anzeigenblock-ID zu ersetzen.

Weitere Informationen zur Funktionsweise von Google Mobile Ads SDK-Testanzeigen finden Sie unter Testanzeigen.

GADBannerView erstellen

Banneranzeigen werden in GADBannerView-Objekten ausgeliefert. Der erste Schritt zur Einbindung von Banneranzeigen besteht also darin, ein GADBannerView in Ihre Ansichtshierarchie aufzunehmen. Dies geschieht in der Regel entweder programmatisch oder über Interface Builder.

Programmatisch

Eine GADBannerView kann auch direkt instanziiert werden. Im folgenden Beispiel wird ein GADBannerView erstellt:

Swift

// Initialize the banner view.
bannerView = BannerView()
bannerView.delegate = self

bannerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bannerView)

// This example doesn't give width or height constraints, as the ad size gives the banner an
// intrinsic content size to size the view.
NSLayoutConstraint.activate([
  // Align the banner's bottom edge with the safe area's bottom edge
  bannerView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
  // Center the banner horizontally in the view
  bannerView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
])

SwiftUI

Wenn Sie ein BannerView verwenden möchten, erstellen Sie ein UIViewRepresentable:

private struct BannerViewContainer: UIViewRepresentable {
  typealias UIViewType = BannerView
  let adSize: AdSize

  init(_ adSize: AdSize) {
    self.adSize = adSize
  }

  func makeUIView(context: Context) -> BannerView {
    let banner = BannerView(adSize: adSize)
    banner.adUnitID = "ca-app-pub-3940256099942544/2435281174"
    banner.load(Request())
    banner.delegate = context.coordinator
    return banner
  }

  func updateUIView(_ uiView: BannerView, context: Context) {}

  func makeCoordinator() -> BannerCoordinator {
    return BannerCoordinator(self)
  }

Fügen Sie UIViewRepresentable der Ansichtshierarchie hinzu und geben Sie die Werte height und width an:

var body: some View {
  Spacer()
  // Request an anchored adaptive banner with a width of 375.
  let adSize = largeAnchoredAdaptiveBanner(width: 375)
  BannerViewContainer(adSize)
    .frame(width: adSize.size.width, height: adSize.size.height)
}

Objective-C

// Initialize the banner view.
GADBannerView *bannerView = [[GADBannerView alloc] init];
bannerView.delegate = self;
UIView *view = self.view;

bannerView.translatesAutoresizingMaskIntoConstraints = NO;
[view addSubview:bannerView];

// This example doesn't give width or height constraints, as the ad size gives the banner an
// intrinsic content size to size the view.
[NSLayoutConstraint activateConstraints:@[
  // Align the banner's bottom edge with the safe area's bottom edge
  [bannerView.bottomAnchor
      constraintEqualToAnchor:view.safeAreaLayoutGuide.bottomAnchor],
  // Center the banner horizontally in the view
  [bannerView.centerXAnchor constraintEqualToAnchor:view.centerXAnchor],
]];

self.bannerView = bannerView;

Interface Builder

Sie können einem Storyboard oder einer XIB-Datei ein GADBannerView hinzufügen. Wenn Sie diese Methode verwenden, dürfen Sie nur Positionsbeschränkungen für das Banner hinzufügen. Wenn Sie beispielsweise ein adaptives Banner unten auf dem Bildschirm anzeigen, legen Sie den unteren Rand der Bannerview auf den oberen Rand des Bottom Layout Guide fest und die centerX-Einschränkung auf die centerX der Superview.

Anzeigengröße festlegen

Große adaptive Banner sind ein größeres Format, das für Layouts ohne Scrollen konzipiert ist. Im Vergleich zu standardmäßigen verankerten adaptiven Bannern ist bei diesen Bannern eine größere maximale Höhe möglich (bis zu 20% der Bildschirmhöhe, zwischen 50 und 150 Punkten). Dieser zusätzliche Platz ist für Videoinhalte optimiert.

Im folgenden Beispiel wird die Größe eines großen adaptiven Ankerbanners abgerufen:

Swift

// Request a large anchored adaptive banner with a width of 375.
bannerView.adSize = largeAnchoredAdaptiveBanner(width: 375)

Objective-C

// Request a large anchored adaptive banner with a width of 375.
self.bannerView.adSize = GADLargeAnchoredAdaptiveBannerAdSizeWithWidth(375);

Anzeige laden

Sobald der GADBannerView vorhanden und seine Eigenschaften wie adUnitID konfiguriert sind, kann eine Anzeige geladen werden. Dazu wird loadRequest: für ein GADRequest-Objekt aufgerufen:

Swift

func loadBannerAd(bannerView: BannerView) {
  // Request a large anchored adaptive banner with a width of 375.
  bannerView.adSize = largeAnchoredAdaptiveBanner(width: 375)
  bannerView.load(Request())
}

SwiftUI

banner.adUnitID = "ca-app-pub-3940256099942544/2435281174"
banner.load(Request())

Objective-C

// Request a large anchored adaptive banner with a width of 375.
self.bannerView.adSize = GADLargeAnchoredAdaptiveBannerAdSizeWithWidth(375);

[self.bannerView loadRequest:[GADRequest request]];

GADRequest-Objekte stellen eine einzelne Anzeigenanfrage dar und enthalten Eigenschaften für Dinge wie Ausrichtungsinformationen.

Anzeige aktualisieren

Wenn Sie Ihren Anzeigenblock für die Aktualisierung konfiguriert haben, müssen Sie keine weitere Anzeige anfordern, wenn die Anzeige nicht geladen wird. Google Mobile Ads SDK berücksichtigt alle Aktualisierungsraten, die Sie in der AdMob-Benutzeroberfläche angegeben haben. Wenn Sie die Aktualisierung nicht aktiviert haben, senden Sie eine neue Anfrage. Weitere Informationen zur Aktualisierung von Anzeigenblöcken, z. B. zum Festlegen einer Aktualisierungsrate, finden Sie unter Automatische Aktualisierung für Banneranzeigen verwenden.

Umgang mit Änderungen der Ausrichtung

Wenn sich die Bildschirmausrichtung Ihrer App ändert, z. B. vom portrait-Modus ins Querformat, ändert sich oft auch die verfügbare Breite für das Banner. Damit Sie eine Anzeige mit der richtigen Größe für das neue Layout ausliefern, müssen Sie ein neues Banner anfordern. Wenn die Bannerbreite statisch ist oder die Layoutbeschränkungen die Größenänderung zulassen, können Sie diesen Schritt überspringen.

Swift

override func viewWillTransition(
  to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator
) {
  coordinator.animate(alongsideTransition: { _ in
    // Load a new ad for the new orientation.
  })
}

Objective-C

- (void)viewWillTransitionToSize:(CGSize)size
       withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
  [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
    // Load a new ad for the new orientation.
  } completion:nil];
}

Anzeigenereignisse

Mit GADBannerViewDelegate können Sie Lifecycle-Ereignisse erfassen, z. B. wenn eine Anzeige geschlossen wird oder der Nutzer die App verlässt.

Für Banner-Events registrieren

Wenn Sie sich für Banneranzeigenereignisse registrieren möchten, legen Sie die delegate-Property für GADBannerView auf ein Objekt fest, das das GADBannerViewDelegate-Protokoll implementiert. In der Regel fungiert die Klasse, die Banneranzeigen implementiert, auch als Delegate-Klasse. In diesem Fall kann die delegate-Eigenschaft auf self gesetzt werden.

Swift

bannerView.delegate = self

SwiftUI

banner.delegate = context.coordinator

Objective-C

bannerView.delegate = self;

Bannerereignisse implementieren

Jede der Methoden in GADBannerViewDelegate ist als optional gekennzeichnet. Sie müssen also nur die Methoden implementieren, die Sie benötigen. In diesem Beispiel wird jede Methode implementiert und eine Nachricht in der Konsole protokolliert:

Swift

func bannerViewDidReceiveAd(_ bannerView: BannerView) {
  print("Banner ad loaded.")
}

func bannerView(_ bannerView: BannerView, didFailToReceiveAdWithError error: Error) {
  print("Banner ad failed to load: \(error.localizedDescription)")
}

func bannerViewDidRecordImpression(_ bannerView: BannerView) {
  print("Banner ad recorded an impression.")
}

func bannerViewDidRecordClick(_ bannerView: BannerView) {
  print("Banner ad recorded a click.")
}

func bannerViewWillPresentScreen(_ bannerView: BannerView) {
  print("Banner ad will present screen.")
}

func bannerViewWillDismissScreen(_ bannerView: BannerView) {
  print("Banner ad will dismiss screen.")
}

func bannerViewDidDismissScreen(_ bannerView: BannerView) {
  print("Banner ad did dismiss screen.")
}

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");
}

Ein Beispiel für die Implementierung von Banner-Delegatmethoden finden Sie in der iOS API Demo-App unter „Ad Delegate“.

Swift Objective-C

Anwendungsfälle

Hier sind einige Beispiele für Anwendungsfälle für diese Methoden für Anzeigenereignisse.

Banner zur Ansichtshierarchie hinzufügen, sobald eine Anzeige empfangen wird

Möglicherweise sollten Sie das Hinzufügen eines GADBannerView zur Ansichtshierarchie verzögern, bis eine Anzeige empfangen wurde. Dazu können Sie auf das bannerViewDidReceiveAd:-Ereignis warten:

Swift

func bannerViewDidReceiveAd(_ bannerView: BannerView) {
  // 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];
}

Banneranzeige animieren

Sie können das bannerViewDidReceiveAd:-Ereignis auch verwenden, um eine Banneranzeige zu animieren, sobald sie zurückgegeben wird. Hier ein Beispiel:

Swift

func bannerViewDidReceiveAd(_ bannerView: BannerView) {
  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;
  }];
}

App pausieren und fortsetzen

Das GADBannerViewDelegate-Protokoll enthält Methoden, mit denen Sie über Ereignisse benachrichtigt werden können, z. B. wenn durch einen Klick ein Overlay präsentiert oder geschlossen wird. Wenn Sie nachvollziehen möchten, ob diese Ereignisse auf Anzeigen zurückzuführen sind, registrieren Sie sich für diese GADBannerViewDelegate-Methoden.

Damit alle Arten von Overlay-Präsentationen oder externen Browseraufrufen erfasst werden, nicht nur solche, die durch Anzeigenklicks ausgelöst werden, sollte Ihre App auf die entsprechenden Methoden in UIViewController oder UIApplication warten. In der folgenden Tabelle sind die entsprechenden iOS-Methoden aufgeführt, die gleichzeitig mit den GADBannerViewDelegate-Methoden aufgerufen werden:

GADBannerViewDelegate-Methode iOS-Methode
bannerViewWillPresentScreen: viewWillDisappear: von UIViewController
bannerViewWillDismissScreen: viewWillAppear: von UIViewController
bannerViewDidDismissScreen: viewDidAppear: von UIViewController

Zusätzliche Ressourcen

Beispiele auf GitHub

Nächste Schritte

Minimierbare Banner

Minimierbare Banneranzeigen werden zuerst als größeres Overlay mit einem Button zum Minimieren der Anzeige auf eine kleinere Größe präsentiert. Sie können sie verwenden, um die Leistung weiter zu optimieren. Weitere Informationen finden Sie unter Minimierbare Banneranzeigen.

Adaptive Inline-Banner

Adaptive Inline-Banner sind größer und höher als adaptive Ankerbanner. Sie haben eine variable Höhe und können so hoch wie der Gerätebildschirm sein. Adaptive Inline-Banner werden für Apps, in denen Banneranzeigen in scrollbaren Inhalten platziert werden, gegenüber adaptiven Ankerbanneranzeigen empfohlen. Weitere Informationen finden Sie unter Inline-adaptive Banner.

Weitere Themen entdecken