Banneranzeigen

In the Get Started guide, you learned how to deploy the SDK and display a test banner ad. In diesem Leitfaden werden weitere Anpassungen vorgestellt, die mit Banneranzeigen möglich sind.

Laden Sie die iOS API Demo App in Objective-C oder Swift herunter, um zu sehen, wie Anpassungen von Banneranzeigen implementiert werden.

API Demo herunterladen

Für Google Mobile Ads werden folgende Bannergrößen unterstützt:

Größe (B x H) Beschreibung Verfügbarkeit AdSize-Konstante
320 x 50 Standardbanner Smartphones und Tablets kGADAdSizeBanner
320 x 100 Large Banner Smartphones und Tablets kGADAdSizeLargeBanner
300 x 250 IAB-Medium Rectangle Smartphones und Tablets kGADAdSizeMediumRectangle
468 x 60 IAB-Full-Size Banner Tablets kGADAdSizeFullBanner
728 x 90 IAB-Leaderboard Tablets kGADAdSizeLeaderboard
Bildschirmbreite x 32|50|90 Smart-Banner Smartphones und Tablets kGADAdSizeSmartBannerPortrait
kGADAdSizeSmartBannerLandscape

Smart-Banner

Smart-Banner sind Anzeigenblöcke, in denen bildschirmbreite Banneranzeigen auf verschiedenen Geräten im Quer- und Hochformat gerendert werden können. Angesichts der zunehmenden Vielfalt von Bildschirmformaten sind Smart-Banner sehr nützlich, da die Breite des Smartphones und die jeweilige Ausrichtung erkannt werden. Die Größe der Anzeige wird entsprechend angepasst.

In Smart-Bannern sind drei Anzeigenhöhen (in geräteunabhängigen Pixeln, dp) implementiert:

  • 32: Höhe des Gerätebildschirms <= 400
  • 50: 400 < Höhe des Gerätebildschirms <= 720
  • 90: Höhe des Gerätebildschirms > 720

Bei einigen Geräten wie etwa Smartphones hängt die Höhe des Bildschirms von seiner Ausrichtung ab. Normalerweise belegen Smart-Banneranzeigen auf Smartphones im Hochformatmodus Vollständige Breite x 50 dp und im Querformat Vollständige Breite x 32 dp. Auf Tablets beträgt die Größe in beiden Ausrichtungen Vollständige Breite x 90 dp.

Wenn eine Bildanzeige nicht den gesamten vorgesehenen Platz einnimmt, wird das Bild zentriert. Der Bereich auf beiden Seiten wird ausgefüllt.

Zur Verwendung von Smart-Bannern müssen Sie die Konstante kGADAdSizeSmartBannerPortrait oder kGADAdSizeSmartBannerLandscape angeben. Ein Beispiel:

Objective-C

// Use kGADAdSizeSmartBannerLandscape if your app is running in landscape.
DFPBannerView *bannerView = [[DFPBannerView alloc] initWithAdSize:kGADAdSizeSmartBannerPortrait];

Swift

// Use kGADAdSizeSmartBannerLandscape if your app is running in landscape.
let bannerView = DFPBannerView(adSize: kGADAdSizeSmartBannerPortrait)

Benutzerdefinierte Anzeigengröße

Von DFP können außer den AdMob-Standardanzeigenblöcken Anzeigenblöcke beliebiger Größe in eine App ausgeliefert werden. Die in einer Anzeigenanfrage festgelegte Größe (Breite, Höhe) muss mit den Abmessungen der in der App dargestellten Anzeige (im Beispiel unten DFPBannerView) übereinstimmen.

Objective-C

// Define custom GADAdSize of 250x250 for DFPBannerView
GADAdSize customAdSize = GADAdSizeFromCGSize(CGSizeMake(250, 250));
self.bannerView = [[DFPBannerView alloc] initWithAdSize:customAdSize];

Swift

// Define custom GADAdSize of 250x250 for DFPBannerView.
let customAdSize = GADAdSizeFromCGSize(CGSize(width: 250, height: 250))
bannerView = DFPBannerView(adSize: customAdSize)

Eine Implementierung von benutzerdefinierten Anzeigengrößen in der iOS API Demo App finden Sie im Beispiel für mehrere DFP-Anzeigengrößen.

Objective-C Swift

Mehrere Anzeigengrößen

In DFP lassen sich mehrere Anzeigengrößen für die Auslieferung in eine DFPBannerView angeben. Zur Verwendung dieser Funktion sind drei Schritte erforderlich:

  1. Erstellen Sie in der DFP-Benutzeroberfläche eine Position, die auf einen Anzeigenblock ausgerichtet ist, der mit Creatives unterschiedlicher Größe verknüpft ist.

  2. Legen Sie in Ihrer App die Property validAdSizes auf DFPBannerView fest:

    Objective-C

    // Define an optional array of GADAdSize to specify all valid sizes that are appropriate
    // for this slot. Never create your own GADAdSize directly. Use one of the
    // predefined standard ad sizes (such as kGADAdSizeBanner), or create one using
    // the GADAdSizeFromCGSize method.
    //
    // Note: Ensure that the allocated DFPBannerView is defined with an ad size. Also note
    // that all desired sizes should be included in the validAdSizes array.
    self.bannerView.validAdSizes = @[
        NSValueFromGADAdSize(kGADAdSizeBanner),
        NSValueFromGADAdSize(kGADAdSizeMediumRectangle),
        NSValueFromGADAdSize(GADAdSizeFromCGSize(CGSizeMake(120, 20)))
    ];
    

    Swift

    // Define an optional array of GADAdSize to specify all valid sizes that are appropriate
    // for this slot. Never create your own GADAdSize directly. Use one of the
    // predefined standard ad sizes (such as kGADAdSizeBanner), or create one using
    // the GADAdSizeFromCGSize method.
    //
    // Note: Ensure that the allocated DFPBannerView is defined with an ad size. Also note
    // that all desired sizes should be included in the validAdSizes array.
    bannerView.validAdSizes = [NSValueFromGADAdSize(kGADAdSizeBanner),
        NSValueFromGADAdSize(kGADAdSizeMediumRectangle),
        NSValueFromGADAdSize(GADAdSizeFromCGSize(CGSize(width: 120, height: 20)))]
    

  3. Implementieren Sie die Methode GADAdSizeDelegate, um die Änderung einer Anzeigengröße zu erkennen.

    Objective-C

    - (void)adView:(DFPBannerView *)view willChangeAdSizeTo:(GADAdSize)size;
    

    Swift

    public func adView(bannerView: DFPBannerView!, willChangeAdSizeTo size: GADAdSize)
    

    Der Delegat muss festgelegt werden, bevor eine Anzeige angefragt wird:

    Objective-C

    self.bannerView.adSizeDelegate = self;

    Swift

    bannerView.adSizeDelegate = self

Eine Implementierung von benutzerdefinierten Anzeigengrößen in der iOS API Demo App finden Sie im Beispiel für mehrere DFP-Anzeigengrößen.

Objective-C Swift

Impressionen manuell zählen

Sie können Impressions-Pings manuell an DFP senden, wenn eine Impression unter besonderen Bedingungen erfasst werden soll. Aktivieren Sie dazu vor dem Laden einer Anzeige eine DFPBannerView für manuelle Impressionen:

Objective-C

self.bannerView.enableManualImpressions = YES;

Swift

bannerView.enableManualImpressions = true

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

Objective-C

[self.bannerView recordImpression];

Swift

bannerView.recordImpression()

App-Ereignisse

Mit App-Ereignissen können Sie Anzeigen erstellen, die Nachrichten an den App-Code senden. Anhand dieser Nachrichten werden dann Aktionen in der App ausgeführt.

Mit GADAppEventDelegate können Sie DFP-spezifische App-Ereignisse überwachen. Diese Ereignisse können im Lebenszyklus der Anzeige jederzeit auftreten, sogar vor dem Aufruf der Methode adViewDidReceiveAd: von GADBannerViewDelegate.

Objective-C

// Implement your app event within these methods. 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)adView:(DFPBannerView *)banner
    didReceiveAppEvent:(NSString *)name
              withInfo:(NSString *)info;
// Called when the interstitial receives an app event.
- (void)interstitial:(DFPInterstitial *)interstitial
    didReceiveAppEvent:(NSString *)name
              withInfo:(NSString *)info;

Swift

// Implement your app event within these methods. 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 adView(banner: GADBannerView!,
    didReceiveAppEvent name: String!, withInfo info: String!)

// Called when the interstitial receives an app event.
optional public func interstitial(interstitial: GADInterstitial!,
    didReceiveAppEvent name: String!, withInfo info: String!)

Ihre App-Ereignismethoden können in einem Ansicht-Controller implementiert werden:

Objective-C

@import GoogleMobileAds;

@interface ViewController : UIViewController  {
}

@end

Swift

import GoogleMobileAds

class ViewController: UIViewController, GADAppEventDelegate {
}

Der Delegat muss mit der Property appEventDelegate festgelegt werden, bevor eine Anzeige angefragt wird:

Objective-C

self.bannerView.appEventDelegate = self;

Swift

bannerView.appEventDelegate = self

Dieses Beispiel zeigt, wie die Hintergrundfarbe einer App in Abhängigkeit von einem App-Ereignis mit einem Farbnamen geändert wird:

Objective-C

- (void)adView:(DFPBannerView *)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];
    }
  }
}

Swift

func adView(banner: GADBannerView!, didReceiveAppEvent name: String!,
    withInfo info: String!) {
  if name == "color" {
    switch info {
    case "green":
      // Set background color to green.
      view.backgroundColor = UIColor.greenColor()
    case "blue":
      // Set background color to blue.
      view.backgroundColor = UIColor.blueColor()
    default:
      // Set background color to black.
      view.backgroundColor = UIColor.blackColor()
    }
  }
}

Und dies ist das zugehörige Creative, von dem App-Ereignisnachrichten mit der Farbe an appEventDelegate gesendet werden:

<html>
<head>
  <script src="//media.admob.com/api/v1/google_mobile_app_ads.js"></script>
  <script>
    // Send a color=green event when ad loads.
    admob.events.dispatchAppEvent("color", "green");

    handleClick = 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" onClick="handleClick()">Carpe diem!</div>
</body>
</html>

Eine Implementierung von App-Ereignissen in der iOS API Demo App finden Sie im Beispiel zu DFP-App-Ereignissen.

Objective-C Swift

Rückrufe für Ereignisse im Anzeigenlebenszyklus

Sie können optional Lebenszyklusereignisse der Anzeige wie Anfragenfehler oder Klicks nachverfolgen, indem Sie GADBannerViewDelegate ganz oder teilweise implementieren.

Objective-C

@protocol GADBannerViewDelegate 
@optional
- (void)adViewDidReceiveAd:(DFPBannerView *)bannerView;
- (void)adView:(DFPBannerView *)bannerView
    didFailToReceiveAdWithError:(GADRequestError *)error;
- (void)adViewWillPresentScreen:(DFPBannerView *)bannerView;
- (void)adViewDidDismissScreen:(DFPBannerView *)bannerView;
- (void)adViewWillDismissScreen:(DFPBannerView *)bannerView;
- (void)adViewWillLeaveApplication:(DFPBannerView *)bannerView;
@end

Swift

public protocol GADBannerViewDelegate: NSObjectProtocol {
  optional public func adViewDidReceiveAd(bannerView: GADBannerView!)
  optional public func adView(bannerView: GADBannerView!,
      didFailToReceiveAdWithError error: GADRequestError!)
  optional public func adViewWillPresentScreen(bannerView: GADBannerView!)
  optional public func adViewWillDismissScreen(bannerView: GADBannerView!)
  optional public func adViewDidDismissScreen(bannerView: GADBannerView!)
  optional public func adViewWillLeaveApplication(bannerView: GADBannerView!)
}

Diese Methoden können in einem separaten Objekt wie etwa einem Ansicht-Controller implementiert werden:

Objective-C

@import GoogleMobileAds;

@interface ViewController : UIViewController  {
}

@end

Swift

import GoogleMobileAds

class ViewController: UIViewController, GADBannerViewDelegate {
}

Sie lassen sich aber auch als Teil einer DFPBannerView-Unterklasse implementieren:

Objective-C

@import GoogleMobileAds;

@interface MyBannerView : DFPBannerView  {
}

@end

Swift

import GoogleMobileAds

class MyBannerView: DFPBannerView, GADBannerViewDelegate {
}

Der Delegat muss festgelegt werden, bevor eine Anzeige angefragt wird:

Objective-C

self.bannerView.delegate = self;

Swift

bannerView.delegate = self

adViewDidReceiveAd:

Wird gesendet, wenn loadRequest: erfolgreich war. Dieser Zeitpunkt ist auch günstig, um den Sender der Ansichtshierarchie hinzuzufügen, falls er bisher ausgeblendet war. Ein Beispiel:

Objective-C

- (void)adViewDidReceiveAd:(DFPBannerView *)bannerView {
  bannerView.hidden = NO;
}

Swift

func adViewDidReceiveAd(bannerView: DFPBannerView!) {
  bannerView.hidden = false
}

adView:didFailToReceiveAdWithError:

Wird gesendet, wenn loadRequest: fehlgeschlagen ist. Zu den häufigsten Gründen gehören Netzwerkfehler, App-Konfigurationsfehler oder fehlendes Anzeigeninventar. Sie können diese Ereignisse zu Fehlerbehebungszwecken protokollieren:

Objective-C

- (void)adView:(DFPBannerView *)adView
    didFailToReceiveAdWithError:(GADRequestError *)error {
  NSLog(@"adView:didFailToReceiveAdWithError: %@", error.localizedDescription);
}

Swift

func adView(bannerView: DFPBannerView!,
    didFailToReceiveAdWithError error: GADRequestError!) {
  print("adView:didFailToReceiveAdWithError: \(error.localizedDescription)")
}

adViewWillPresentScreen:

Wird gesendet, unmittelbar bevor für einen Nutzer, der den Bildschirm (Sender) berührt hat, eine Anzeigenbenutzeroberfläche im Vollbildmodus dargestellt wird. An dieser Stelle sollten Sie ganz wie bei UIApplicationDidEnterBackgroundNotification alle Animationen, Timer und anderen Aktivitäten anhalten, die eine Nutzerinteraktion annehmen, und den App-Status speichern. Normalerweise überfliegt der Nutzer die Vollbildanzeige und schließt sie dann, wodurch adViewDidDismissScreen: generiert wird. Danach wird die Steuerung an Ihre App zurückgegeben. Ist die Banneraktion jedoch ein Click-to-App-Store oder Click-to-iTunes oder drückt der Nutzer in der Anzeige die Home-Taste, wird Ihre App in den Hintergrund verschoben und möglicherweise beendet.

In diesen Fällen wird unter iOS 4.0 und höher als Nächstes die Methode applicationWillResignActive: des Root-Ansicht-Controllers und dann die Methode adViewWillLeaveApplication: aufgerufen.

adViewDidDismissScreen:

Wird gesendet, wenn der Nutzer die Vollbild-Benutzeroberfläche des Senders verlassen hat.

adViewWillDismissScreen:

Wird gesendet, unmittelbar bevor die Vollbild-Benutzeroberfläche des Senders geschlossen wird. Hierbei werden Ihre App und der Root-Ansicht-Controller wiederhergestellt. An dieser Stelle sollten Sie alle Vordergrundaktivitäten neu starten, die im Rahmen von adViewWillPresentScreen: angehalten wurden.

adViewWillLeaveApplication:

Wird gesendet, unmittelbar bevor die App in den Hintergrund verschoben oder beendet wird, da der Nutzer ein Click-to-App-Store- oder Click-to-iTunes-Banner berührt hat. Die normalen UIApplicationDelegate-Benachrichtigungen wie applicationDidEnterBackground: gehen unmittelbar davor ein.

Fragen Sie keine Anzeige in applicationWillEnterForeground: an, da die Anfrage ignoriert wird. Fügen Sie die Anfrage stattdessen in applicationDidBecomeActive: ein.

Objective-C-Delegaten werden nicht beibehalten und können asynchron übertragen werden, bevor das delegierende Objekt endgültig freigegeben wird.

Eine Implementierung von Ereignisrückrufen im Anzeigenlebenszyklus in der iOS API Demo App finden Sie im Ad Delegate-Beispiel.

Objective-C Swift

Nächste Schritte

Feedback geben zu...

SDK for DFP Users on iOS