Anzeigenereignisse

In diesem Leitfaden erfahren Sie, wie GADBannerViewDelegate und GADInterstitialDelegate verwendet werden, um Anzeigenereignisse für Banner- und Interstitial-Anzeigen zu überwachen. Mit diesen Ereignissen können Sie Lebenszyklusereignisse erfassen, beispielsweise das Laden einer App oder wenn eine Anzeige bewirkt, dass Nutzer die App verlassen.

Voraussetzungen

Informationen für Einsteiger

Informieren Sie sich, wie einem Projekt Interstitial-Anzeigen hinzugefügt werden. Sie werden dann auch erkennen, warum es sinnvoll ist, GADInterstitialDelegate zum Überwachen von Interstitial-Anzeigenereignissen zu nutzen.

GADBannerViewDelegate-Implementierung

Für Bannerereignisse registrieren

Um sich für Banneranzeigenereignisse zu registrieren, legen Sie die Property delegate von DFPBannerView auf ein Objekt fest, in dem das GADBannerViewDelegate-Protokoll implementiert ist. Im Allgemeinen agiert die Klasse, in der Banneranzeigen implementiert sind, als delegate-Klasse. In diesem Fall kann die delegate-Property auf self festgelegt werden.

Objective-C

#import "DFPBannerView.h"
#import "GADBannerViewDelegate.h"

@interface ViewController ()<GADBannerViewDelegate>

@property(nonatomic, strong) DFPBannerView *bannerView;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.bannerView = [[DFPBannerView alloc] initWithAdSize:kGADAdSizeBanner];
  self.bannerView.delegate = self;
}

Swift

import UIKit
import GoogleMobileAds

class ViewController: UIViewController, GADBannerViewDelegate {

  var bannerView: DFPBannerView!

  override func viewDidLoad() {
    super.viewDidLoad()
    bannerView = DFPBannerView(adSize: kGADAdSizeBanner)
    bannerView.delegate = self
  }
}

Bannerereignisse implementieren

Alle Methoden in GADBannerViewDelegate sind als optional gekennzeichnet. Sie müssen daher nur die gewünschten Methoden implementieren. In diesem Beispiel wird jede Methode implementiert und eine Meldung in der Konsole ausgegeben.

Objective-C

// Tells the delegate an ad request loaded an ad.
- (void)adViewDidReceiveAd:(DFPBannerView *)adView {
  NSLog(@"adViewDidReceiveAd");
}

// Tells the delegate an ad request failed.
- (void)adView:(DFPBannerView *)adView
    didFailToReceiveAdWithError:(GADRequestError *)error {
  NSLog(@"adView:didFailToReceiveAdWithError: %@", [error localizedDescription]);
}

// Tells the delegate that a full screen view will be presented in response
// to the user clicking on an ad.
- (void)adViewWillPresentScreen:(DFPBannerView *)adView {
  NSLog(@"adViewWillPresentScreen");
}

// Tells the delegate that the full screen view will be dismissed.
- (void)adViewWillDismissScreen:(DFPBannerView *)adView {
  NSLog(@"adViewWillDismissScreen");
}

// Tells the delegate that the full screen view has been dismissed.
- (void)adViewDidDismissScreen:(DFPBannerView *)adView {
  NSLog(@"adViewDidDismissScreen");
}

// Tells the delegate that a user click will open another app (such as
// the App Store), backgrounding the current app.
- (void)adViewWillLeaveApplication:(DFPBannerView *)adView {
  NSLog(@"adViewWillLeaveApplication");
}

Swift

// Tells the delegate an ad request loaded an ad.
func adViewDidReceiveAd(bannerView: DFPBannerView!) {
  print("adViewDidReceiveAd")
}

// Tells the delegate an ad request failed.
func adView(bannerView: DFPBannerView!,
    didFailToReceiveAdWithError error: GADRequestError!) {
  print("adView:didFailToReceiveAdWithError: \(error.localizedDescription)")
}

// Tells the delegate that a full screen view will be presented in response
// to the user clicking on an ad.
func adViewWillPresentScreen(bannerView: DFPBannerView!) {
  print("adViewWillPresentScreen")
}

// Tells the delegate that the full screen view will be dismissed.
func adViewWillDismissScreen(bannerView: DFPBannerView!) {
  print("adViewWillDismissScreen")
}

// Tells the delegate that the full screen view has been dismissed.
func adViewDidDismissScreen(bannerView: DFPBannerView!) {
  print("adViewDidDismissScreen")
}

// Tells the delegate that a user click will open another app (such as
// the App Store), backgrounding the current app.
func adViewWillLeaveApplication(bannerView: DFPBannerView!) {
  print("adViewWillLeaveApplication")
}

Anwendungsfälle

Hier sind einige Anwendungsfälle für diese Anzeigenereignismethoden aufgeführt.

Ein Banner zur Ansichtshierarchie hinzufügen, nachdem eine Anzeige empfangen wurde

Sie können mit dem Hinzufügen einer DFPBannerView zur Ansichtshierarchie warten, bis eine Anzeige empfangen wird. Dazu überwachen Sie das Ereignis adViewDidReceiveAd:.

Objective-C

- (void)adViewDidReceiveAd:(DFPBannerView *)adView {
  [self.view addSubview:adView];
}

Swift

func adViewDidReceiveAd(bannerView: DFPBannerView!) {
  view.addSubview(bannerView)
}

Mit der Methode addSubview wird eine Ansicht automatisch aus der übergeordneten Ansicht entfernt, falls darin bereits eine Ansicht enthalten ist. Dieser Aufruf kann daher problemlos jedes Mal erfolgen.

Banneranzeige animieren

Mit dem Ereignis adViewDidReceiveAd können Sie eine Banneranzeige auch animieren, sobald sie zurückgegeben wurde. Dieses Code-Snippet zeigt, wie Sie eine Banneranzeige langsam einblenden.

Objective-C

- (void)adViewDidReceiveAd:(DFPBannerView *)adView {
  adView.alpha = 0;
  [UIView animateWithDuration:1.0 animations:^{
    adView.alpha = 1;
  }];
}

Swift

func adViewDidReceiveAd(bannerView: DFPBannerView!) {
  bannerView.alpha = 0
  UIView.animateWithDuration(1, animations: {
    bannerView.alpha = 1
  })
}

Drittanbieter-Analysetools

Vom SDK werden Klicks und Impressionen automatisch erfasst. Wenn Sie zusätzlich ein Drittanbieter-Analysetool verwenden, können Sie auch jeden GADBannerViewDelegate-Aufruf separat erfassen.

App pausieren und fortsetzen

GADBannerViewDelegate enthält Ereignisse, mit denen Sie benachrichtigt werden, wenn ein Klick bewirkt, dass ein Overlay angezeigt oder geschlossen oder ein externer Browser aufgerufen wird. Registrieren Sie sich für diese GADBannerViewDelegate-Methoden, wenn Sie erfahren möchten, dass diese Ereignisse durch Anzeigen ausgelöst wurden.

Um jedoch alle Arten von Overlay-Präsentationen oder Aufrufen externer Browser und nicht nur solche von Anzeigenklicks zu erfassen, sollte Ihre App eher die gleichwertigen Methoden in UIViewController oder UIApplication. überwachen. Die folgende Tabelle enthält die gleichwertigen iOS-Methoden, die zur selben Zeit wie GADBannerViewDelegate-Methoden aufgerufen werden.

GADBannerViewDelegate-Methode iOS-Methode
adViewWillPresentScreen: viewWillDisappear: von UIViewController
adViewWillDismissScreen: viewWillAppear: von UIViewController
adViewDidDismissScreeen: viewDidAppear: von UIViewController
adViewWillLeaveApplication: applicationDidEnterBackground: von UIApplicationDelegate

GADInterstitialDelegate-Implementierung

Für Interstitial-Ereignisse registrieren

Um sich für Interstitial-Anzeigenereignisse zu registrieren, legen Sie die Property delegate von DFPInterstitial auf ein Objekt fest, in dem das GADInterstitialDelegate-Protokoll implementiert ist. Im Allgemeinen agiert die Klasse, in der Interstitial-Anzeigen implementiert sind, als delegate-Klasse. In diesem Fall kann die delegate-Property auf self festgelegt werden.

Objective-C

#import "DFPInterstitial.h"
#import "GADInterstitialDelegate.h"

@interface ViewController ()<GADInterstitialDelegate>

@property(nonatomic, strong) DFPInterstitial *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.interstitial = [[DFPInterstitial alloc] initWithAdUnitID:"/6499/example/interstitial"];
  self.interstitial.delegate = self;
}

Swift

import UIKit
import GoogleMobileAds

class ViewController: UIViewController, GADInterstitialDelegate {

  var interstitial: DFPInterstitial!

  override func viewDidLoad() {
    super.viewDidLoad()
    interstitial = DFPInterstitial(adUnitID: "/6499/example/interstitial")
    interstitial.delegate = self
  }
}

Interstitial-Ereignisse implementieren

Alle Methoden in GADInterstitialDelegate sind als optional gekennzeichnet. Sie müssen daher nur die gewünschten Methoden implementieren. In diesem Beispiel wird jede Methode implementiert und eine Meldung in der Konsole ausgegeben.

Objective-C

// Called when an interstitial ad request succeeded.
- (void)interstitialDidReceiveAd:(DFPInterstitial *)ad {
  NSLog(@"interstitialDidReceiveAd");
}

// Called when an interstitial ad request failed.
- (void)interstitial:(DFPInterstitial *)ad
    didFailToReceiveAdWithError:(GADRequestError *)error {
  NSLog(@"interstitial:didFailToReceiveAdWithError: %@", [error localizedDescription]);
}

// Called just before presenting an interstitial.
- (void)interstitialWillPresentScreen:(DFPInterstitial *)ad {
  NSLog(@"interstitialWillPresentScreen");
}

// Called before the interstitial is to be animated off the screen.
- (void)interstitialWillDismissScreen:(DFPInterstitial *)ad {
  NSLog(@"interstitialWillDismissScreen");
}

// Called just after dismissing an interstitial and it has animated off the screen.
- (void)interstitialDidDismissScreen:(DFPInterstitial *)ad {
  NSLog(@"interstitialDidDismissScreen");
}

// Called just before the app will background or terminate because the user clicked on an
// ad that will launch another app (such as the App Store).
- (void)interstitialWillLeaveApplication:(DFPInterstitial *)ad {
  NSLog(@"interstitialWillLeaveApplication");
}

Swift

// Called when an interstitial ad request succeeded.
func interstitialDidReceiveAd(ad: DFPInterstitial!) {
  print("interstitialDidReceiveAd")
}

// Called when an interstitial ad request failed.
func interstitial(ad: DFPInterstitial!, didFailToReceiveAdWithError error: GADRequestError!) {
  print("interstitial:didFailToReceiveAdWithError: \(error.localizedDescription)")
}

// Called just before presenting an interstitial.
func interstitialWillPresentScreen(ad: DFPInterstitial!) {
  print("interstitialWillPresentScreen")
}

// Called before the interstitial is to be animated off the screen.
func interstitialWillDismissScreen(ad: DFPInterstitial!) {
  print("interstitialWillDismissScreen")
}

// Called just after dismissing an interstitial and it has animated off the screen.
func interstitialDidDismissScreen(ad: DFPInterstitial!) {
  print("interstitialDidDismissScreen")
}

// Called just before the application will background or terminate because the user clicked on an
// ad that will launch another app (such as the App Store).
func interstitialWillLeaveApplication(ad: DFPInterstitial!) {
  print("interstitialWillLeaveApplication")
}

Anwendungsfälle

Drittanbieter-Analysetools

Vom SDK werden Klicks und Impressionen automatisch erfasst. Wenn Sie zusätzlich ein Drittanbieter-Analysetool verwenden, können Sie auch jeden GADInterstitialDelegate-Aufruf separat erfassen.

Häufig gestellte Fragen

Erhalte ich Benachrichtigungen über GADBannerViewDelegate- oder GADInterstitialDelegate-Ereignisse, wenn ich die Vermittlung verwende?
Zum Senden all dieser Ereignisse sind Vermittlungsadapter erforderlich. Diese Ereignisse werden an Ihre App weitergeleitet.
Kann ich das interstitialDidReceiveAd-Ereignis verwenden, um die Interstitial-Anzeige auszuliefern?
Dies widerspricht unserer Best Practices-Empfehlung. Die Nutzererfahrung kann dadurch beeinträchtigt werden. Laden Sie stattdessen die Anzeige, bevor sie ausgeliefert werden muss, und prüfen Sie mithilfe der Methode isReady von DFPInterstitial, ob sie bereit zur Auslieferung ist.