Interstitial-Anzeigen

Interstitial-Anzeigen sind Vollbildanzeigen, die die Benutzeroberfläche einer App überlagern, bis sie vom Nutzer geschlossen werden. Sie werden normalerweise an natürlichen Übergangspunkten im App-Ablauf angezeigt, z. B. zwischen Aktivitäten oder während der Pause zwischen Levels in einem Spiel. Wenn in einer App eine Interstitial-Anzeige eingeblendet wird, kann der Nutzer entweder auf die Anzeige tippen und zum Ziel wechseln oder sie schließen und zur App zurückkehren.

In diesem Leitfaden erfahren Sie, wie Sie Interstitial-Anzeigen in eine iOS-App einbinden.

Voraussetzungen

  • Google Mobile Ads SDK 8.0.0 oder höher.
  • Arbeiten Sie den Startleitfaden durch.

Immer mit Testanzeigen testen

Verwenden Sie beim Erstellen und Testen Ihrer Apps Testanzeigen und keine Liveanzeigen. Andernfalls kann Ihr Konto gesperrt werden.

Testanzeigen lassen sich am einfachsten mit unserer speziellen Test-ID für Anzeigenblöcke für iOS-Interstitials laden:
/6499/example/interstitial

Er wurde speziell so konfiguriert, dass bei jeder Anfrage Testanzeigen zurückgegeben werden. Sie können ihn beim Programmieren, Testen und Debuggen kostenlos in Ihren eigenen Apps verwenden. Ersetzen Sie sie einfach durch Ihre eigene Anzeigenblock-ID, bevor Sie Ihre App veröffentlichen.

Weitere Informationen zur Funktionsweise der Testanzeigen des Mobile Ads SDK finden Sie unter Testanzeigen.

Implementierung

Die wichtigsten Schritte zur Integration von Interstitial-Anzeigen sind:

  1. Laden Sie eine Anzeige.
  2. Registrieren Sie sich für Rückrufe.
  3. Zeigen Sie die Anzeige an und verarbeiten Sie das Prämienereignis.

Anzeige laden

Eine Anzeige wird mit der statischen Methode loadWithAdManagerAdUnitID:request:completionHandler: in der Klasse GAMInterstitialAd geladen. Die Lademethode erfordert die Anzeigenblock-ID, ein GAMRequest-Objekt und einen Vervollständigungs-Handler, der aufgerufen wird, wenn das Laden der Anzeige erfolgreich ist oder fehlschlägt. Das geladene GAMInterstitialAd-Objekt wird im Abschluss-Handler als Parameter bereitgestellt. Das folgende Beispiel zeigt, wie ein GAMInterstitialAd in Ihrer ViewController-Klasse geladen wird.

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var interstitial: GAMInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()

    do {
      interstitial = try await GAMInterstitialAd.load(
        withAdUnitID: "/6499/example/interstitial", request: GAMRequest())
    } catch {
      print("Failed to load interstitial ad with error: \(error.localizedDescription)")
    }
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GAMInterstitialAd *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GAMRequest *request = [GAMRequest request];
  [GAMInterstitialAd loadWithAdManagerAdUnitID:@"/6499/example/interstitial"
                                       request:request
                             completionHandler:^(GAMInterstitialAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
      return;
    }
    self.interstitial = ad;
  }];
}

Für Rückrufe registrieren

Um Benachrichtigungen zu Präsentationsereignissen zu erhalten, müssen Sie das GADFullScreenContentDelegate-Protokoll implementieren und der fullScreenContentDelegate-Eigenschaft der zurückgegebenen Anzeige zuweisen. Das GADFullScreenContentDelegate-Protokoll verarbeitet Callbacks, wenn die Anzeige erfolgreich oder nicht erfolgreich ausgeliefert und geschlossen wird. Der folgende Code zeigt, wie das Protokoll implementiert und der Anzeige zugewiesen wird:

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var interstitial: GAMInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()

    do {
      interstitial = try await GAMInterstitialAd.load(
        withAdUnitID: "/6499/example/interstitial", request: GAMRequest())
      interstitial?.fullScreenContentDelegate = self
    } catch {
      print("Failed to load interstitial ad with error: \(error.localizedDescription)")
    }
  }

  /// Tells the delegate that the ad failed to present full screen content.
  func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
    print("Ad did fail to present full screen content.")
  }

  /// Tells the delegate that the ad will present full screen content.
  func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad will present full screen content.")
  }

  /// Tells the delegate that the ad dismissed full screen content.
  func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad did dismiss full screen content.")
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController () <GADFullScreenContentDelegate>

@property(nonatomic, strong) GAMInterstitialAd *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GAMRequest *request = [GAMRequest request];
  [GAMInterstitialAd loadWithAdManagerAdUnitID:@"/6499/example/interstitial"
                                       request:request
                             completionHandler:^(GAMInterstitialAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
      return;
    }
    self.interstitial = ad;
    self.interstitial.fullScreenContentDelegate = self;
  }];
}

/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
    NSLog(@"Ad did fail to present full screen content.");
}

/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
    NSLog(@"Ad will present full screen content.");
}

/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
  NSLog(@"Ad did dismiss full screen content.");
}

GAMInterstitialAd ist ein Objekt zur einmaligen Verwendung. Eine einmal ausgelieferte Interstitial-Anzeige kann also nicht mehr ausgeliefert werden. Als Best Practice wird empfohlen, eine weitere Interstitial-Anzeige in der Methode adDidDismissFullScreenContent: auf GADFullScreenContentDelegate zu laden. Dann wird die nächste Interstitial-Anzeige geladen, sobald die vorherige geschlossen wird.

Anzeige einblenden

Interstitials sollten während natürlicher Pausen im App-Ablauf eingeblendet werden. Ein gutes Beispiel sind die zwischen den Leveln eines Spiels oder nachdem der Nutzer eine Aufgabe abgeschlossen hat. Hier ein Beispiel für die Vorgehensweise in einer der Aktionsmethoden in einem UIViewController:

Swift

@IBAction func doSomething(_ sender: Any) {
  guard let interstitial = interstitial else {
    return print("Ad wasn't ready.")
  }

  // The UIViewController parameter is an optional.
  interstitial.present(fromRootViewController: nil)
}

Objective-C

- (IBAction)doSomething:(id)sender {
  if (self.interstitial) {
    // The UIViewController parameter is nullable.
    [self.interstitial presentFromRootViewController:nil];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

Wenn Sie keine Anzeigen mit der Fehlermeldung „Request Error: No ads to show“ erhalten, stellen Sie sicher, dass Ihre Werbebuchung ein Creative enthält, das auf die richtige Größe ausgerichtet ist. Die Interstitial-Größen sind 320 × 480 und 480 × 320 für Smartphones und 1.024 × 768 und 768 × 1.024 für Tablets. Ist ein Gerät nicht groß genug für 1024 × 768 oder 768 × 1024, wird die Größe 320 × 480 oder 480 × 320 verwendet.

Best Practices

Überlegen Sie, ob Interstitial-Anzeigen der richtige Typ für Ihre App sind.
Interstitial-Anzeigen funktionieren am besten in Apps mit natürlichen Übergangspunkten. Der Abschluss einer Aufgabe in einer App, z. B. das Teilen eines Bildes oder der Abschluss eines Levels in einem Spiel, schafft einen solchen Punkt. Da der Nutzer eine Unterbrechung der Aktion erwartet, kann eine Interstitial-Anzeige präsentiert werden, ohne die Nutzererfahrung zu beeinträchtigen. Sie sollten sich überlegen, an welchen Punkten im Workflow Ihrer App Interstitial-Anzeigen ausgeliefert werden und wie der Nutzer wahrscheinlich darauf reagieren wird.
Denken Sie daran, die Aktion beim Ausliefern einer Interstitial-Anzeige zu pausieren.
Es gibt verschiedene Arten von Interstitial-Anzeigen: Text-, Bild- und Videoanzeigen. Wenn in Ihrer App Interstitial-Anzeigen eingeblendet werden, dürfen auch einige Ressourcen nicht mehr genutzt werden, damit diese von der Anzeige genutzt werden können. Wenn Sie beispielsweise die Auslieferung einer Interstitial-Anzeige starten, müssen Sie die Audioausgabe in Ihrer App anhalten. Sie können die Wiedergabe der Töne im Event-Handler adDidDismissFullScreenContent: fortsetzen, der aufgerufen wird, wenn der Nutzer die Interaktion mit der Anzeige beendet hat. Außerdem sollten Sie intensive Rechenaufgaben (z. B. eine Spielschleife) vorübergehend anhalten, während die Anzeige zu sehen ist. So wird sichergestellt, dass keine langsamen oder nicht reagierenden Grafiken oder ein stockendes Video für den Nutzer zu sehen ist.
Warten Sie ausreichend lange.
Interstitial-Anzeigen sollten zum richtigen Zeitpunkt eingeblendet werden und Nutzer müssen nicht warten, bis sie geladen sind. Wenn die Anzeige vor der Auslieferung geladen wird, kann dafür gesorgt werden, dass in Ihrer App zum Zeitpunkt der Auslieferung eine vollständig geladene Interstitial-Anzeige verfügbar ist.
Überfluten Sie den Nutzer nicht mit Werbung.
Das Erhöhen der Häufigkeit von Interstitial-Anzeigen in Ihrer App scheint eine gute Möglichkeit zur Umsatzsteigerung zu sein. Es kann aber auch die Nutzererfahrung beeinträchtigen und die Klickrate senken. Achte darauf, dass Nutzer nicht so häufig unterbrochen werden, dass sie die Nutzung deiner App nicht mehr nutzen können.
Verwenden Sie nicht den Callback für den Ladeabschluss, um die Interstitial-Anzeige auszuliefern.
Dies kann die Nutzerfreundlichkeit beeinträchtigen. Laden Sie die Anzeige stattdessen vorab, bevor sie ausgeliefert werden muss. Prüfen Sie dann die Methode canPresentFromRootViewController:error: für GAMInterstitialAd, um herauszufinden, ob sie angezeigt werden kann.

Beispiele auf GitHub

Nächste Schritte