Banneranzeigen einrichten

Banneranzeigen sind rechteckige Anzeigen, die einen Teil des Layouts einer App 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, wobei die maximale Höhe 150 Pixel beträgt. Wenn Sie die Anzeigengröße für jedes Gerät optimieren möchten, verwenden Sie adaptive Banner.

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 mit Testanzeigen testen

Verwenden Sie beim Erstellen und Testen Ihrer Apps Testanzeigen anstelle von Live-Anzeigen. Andernfalls kann es zu einer Sperrung Ihres Kontos kommen.

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

/21775744923/example/adaptive-banner

Sie ist speziell so konfiguriert, dass für jede Anfrage Testanzeigen zurückgegeben werden. Sie können sie in Ihren eigenen Apps beim Programmieren, Testen und Debuggen verwenden. Ersetzen Sie sie vor der Veröffentlichung Ihrer App durch Ihre eigene Anzeigenblock-ID.

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

GAMBannerView erstellen

Banneranzeigen werden in GAMBannerView-Objekten präsentiert. Der erste Schritt zur Einbindung von Banneranzeigen besteht also darin, ein GAMBannerView-Objekt in die Ansichtshierarchie aufzunehmen. Dies geschieht normalerweise entweder programmatisch oder über den Interface Builder.

Programmatisch

Ein GAMBannerView kann auch direkt instanziiert werden. Im folgenden Beispiel wird ein GAMBannerView erstellt:

Swift

// Initialize the banner view.
bannerView = AdManagerBannerView()
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 einen AdManagerBannerView verwenden möchten, erstellen Sie einen 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 der Ansichtshierarchie die UIViewRepresentable 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.
GAMBannerView *bannerView = [[GAMBannerView 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 einer Storyboard- oder XIB-Datei ein GAMBannerView hinzufügen. Wenn Sie diese Methode verwenden, sollten Sie nur Positionsbeschränkungen für das Banner hinzufügen. Wenn Sie beispielsweise ein adaptives Banner am unteren Bildschirmrand anzeigen, legen Sie die Unterseite der Banneransicht auf die Oberseite des unteren Layout-Guides fest und setzen Sie die Einschränkung centerX auf die centerX der Superview.

Anzeigengröße festlegen

Große adaptive Banner bieten ein größeres Format, das für Layouts ohne Scrollen konzipiert ist. Im Vergleich zu standardmäßigen adaptiven Ankerbannern ermöglichen diese Banner eine größere maximale Höhe (bis zu 20% der Bildschirmhöhe, zwischen 50 und 150 Punkten). Dieser größere Bereich 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);

Legen Sie eine Anzeigengröße fest, die kleiner oder gleich der Bildschirmgröße des Geräts ist. Verwenden Sie die Property UIWindowScene.effectiveGeometry.coordinateSpace, um die maximale Bildschirmgröße unter iOS 26 und höher zu ermitteln. Verwenden Sie unter iOS 18 und niedriger das Attribut UIWindowScene.coordinateSpace. Weitere Informationen zu Größenbeschränkungen finden Sie unter Fehlerbehebung bei nicht erzielten Impressionen in Ad Manager.

Anzeige laden

Sobald der GAMBannerView vorhanden ist und seine Attribute wie adUnitID konfiguriert sind, kann eine Anzeige geladen werden. Dazu rufen Sie loadRequest: für ein GAMRequest-Objekt auf:

Swift

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

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:[GAMRequest request]];

GAMRequest-Objekte stellen eine einzelne Anzeigenanfrage dar und enthalten Attribute für Ausrichtungsinformationen.

Anzeige aktualisieren

Wenn Sie Ihren Anzeigenblock so konfiguriert haben, dass er aktualisiert wird, müssen Sie keine weitere Anzeige anfordern, wenn die Anzeige nicht geladen werden kann. Google Mobile Ads SDK berücksichtigt alle Aktualisierungsraten, die Sie in der Ad Manager-Benutzeroberfläche angegeben haben. Wenn Sie die Aktualisierung nicht aktiviert haben, stellen Sie eine neue Anfrage. Weitere Informationen zur Aktualisierung von Anzeigenblöcken, z. B. zum Festlegen einer Aktualisierungsrate, finden Sie unter Aktualisierungsrate der Anzeigen in mobilen Apps.

Änderungen der Ausrichtung verarbeiten

Wenn sich die Bildschirmausrichtung Ihrer App ändert, z. B. vom portrait-Modus zum Querformat, ändert sich häufig auch die verfügbare Breite für das Banner. Damit eine Anzeige in der richtigen Größe für das neue Layout ausgeliefert wird, 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-Events erfassen, z. B. wenn eine Anzeige geschlossen wird oder der Nutzer die App verlässt.

Für Bannerereignisse registrieren

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

Swift

bannerView.delegate = self

SwiftUI

banner.delegate = context.coordinator

Objective-C

bannerView.delegate = self;

Bannerereignisse implementieren

Alle Methoden in GADBannerViewDelegate sind 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:(GAMBannerView *)bannerView {
  NSLog(@"bannerViewDidReceiveAd");
}

- (void)bannerView:(GAMBannerView *)bannerView didFailToReceiveAdWithError:(NSError *)error {
  NSLog(@"bannerView:didFailToReceiveAdWithError: %@", error.localizedDescription);
}

- (void)bannerViewDidRecordImpression:(GAMBannerView *)bannerView {
  NSLog(@"bannerViewDidRecordImpression");
}

- (void)bannerViewWillPresentScreen:(GAMBannerView *)bannerView {
  NSLog(@"bannerViewWillPresentScreen");
}

- (void)bannerViewWillDismissScreen:(GAMBannerView *)bannerView {
  NSLog(@"bannerViewWillDismissScreen");
}

- (void)bannerViewDidDismissScreen:(GAMBannerView *)bannerView {
  NSLog(@"bannerViewDidDismissScreen");
}

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

Swift Objective-C

Anwendungsfälle

Hier sind einige Anwendungsbeispiele für diese Methoden für Anzeigenereignisse.

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

Sie können das Hinzufügen eines GAMBannerView zur Ansichtshierarchie verzögern, bis eine Anzeige empfangen wurde. Dazu können Sie das Ereignis bannerViewDidReceiveAd: beobachten:

Swift

func bannerViewDidReceiveAd(_ bannerView: BannerView) {
  // Add banner to view and add constraints.
  addBannerViewToView(bannerView)
}

Objective-C

- (void)bannerViewDidReceiveAd:(GAMBannerView *)bannerView {
  // Add bannerView to view and add constraints as above.
  [self addBannerViewToView:self.bannerView];
}

Banneranzeige animieren

Sie können das Ereignis bannerViewDidReceiveAd: auch verwenden, um eine Banneranzeige zu animieren, sobald sie zurückgegeben wird, wie im folgenden Beispiel gezeigt:

Swift

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

App pausieren und fortsetzen

Das GADBannerViewDelegate-Protokoll enthält Methoden, mit denen Sie über Ereignisse benachrichtigt werden, z. B. wenn ein Klick dazu führt, dass ein Overlay angezeigt 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.

Wenn Sie alle Arten von Overlay-Präsentationen oder externen Browseraufrufen erfassen möchten, nicht nur solche, die von Anzeigenklicks stammen, 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: des UIViewController
bannerViewWillDismissScreen: viewWillAppear: des UIViewController
bannerViewDidDismissScreen: viewDidAppear: des UIViewController

Manuelle Zählung von Impressionen

Sie können Impressions-Pings manuell an Ad Manager senden, wenn Sie spezielle Bedingungen dafür haben, wann eine Impression erfasst werden soll. Dazu müssen Sie zuerst einen GAMBannerView für manuelle Impressionen aktivieren, bevor eine Anzeige geladen wird:

Swift

bannerView.enableManualImpressions = true

Objective-C

self.bannerView.enableManualImpressions = YES;

Wenn Sie feststellen, dass eine Anzeige erfolgreich zurückgegeben wurde und auf dem Bildschirm zu sehen ist, können Sie manuell eine Impression auslösen:

Swift

bannerView.recordImpression()

Objective-C

[self.bannerView recordImpression];

App-Ereignisse

Mit GADAppEventDelegate können Sie Ad Manager-spezifische App-Ereignisse erfassen. Diese Ereignisse können jederzeit während des Lebenszyklus der Anzeige auftreten, auch bevor die bannerViewDidReceiveAd: des GADBannerViewDelegate-Objekts aufgerufen wird.

Wenn Sie sich für App-Ereignisse registrieren möchten, legen Sie die Delegate-Property für GAMBannerView auf ein Objekt fest, das das GADAppEventDelegate-Protokoll implementiert. In der Regel fungiert die Klasse, die Banneranzeigen implementiert, auch als Delegatklasse. In diesem Fall kann das Delegatattribut auf self festgelegt werden.

Swift

// Set this property before making the request for an ad.
bannerView.appEventDelegate = self

Objective-C

// Set this property before making the request for an ad.
self.bannerView.appEventDelegate = self;

Im folgenden Beispiel wird gezeigt, wie Sie die Hintergrundfarbe Ihrer App ändern, indem Sie die Farbe über ein App-Ereignis angeben:

Swift

func bannerView(
  _ banner: AdManagerBannerView, didReceiveAppEvent name: String, withInfo info: String?
) {
  if name == "color" {
    if info == "green" {
      // Set background color to green.
      view.backgroundColor = UIColor.green
    } else if info == "blue" {
      // Set background color to blue.
      view.backgroundColor = UIColor.blue
    } else {
      // 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];
    }
  }
}

Und hier ist das entsprechende Creative, das Farb-App-Ereignisnachrichten an appEventDelegate sendet:

<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>

Ein Beispiel für die Implementierung von App-Ereignissen in der iOS API-Demo-App finden Sie im Beispiel für Ad Manager-App-Ereignisse.

Swift Objective-C

Zusätzliche Ressourcen

Beispiele auf GitHub

Nächste Schritte

Minimierbare Banner

Minimierbare Banneranzeigen sind Banneranzeigen, die zuerst als größeres Overlay mit einer Schaltfläche zum Minimieren der Anzeige auf eine kleinere Größe dargestellt werden. 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 gegenüber adaptiven Ankerbannern für Apps empfohlen, in denen Banneranzeigen in scrollbaren Inhalten platziert werden. Weitere Informationen finden Sie unter Adaptive Inline-Banner.

Weitere Themen entdecken