Interstitial-Anzeigen

Interstitial-Anzeigen sind Vollbildanzeigen, die die Benutzeroberfläche einer App überlagern, bis sie vom Nutzer geschlossen werden. Sie werden in der Regel an natürlichen Übergangspunkten innerhalb einer App eingeblendet, z. B. zwischen Aktivitäten oder während der Pause zwischen Levels in einem Spiel. Wenn eine App eine Interstitial-Anzeige präsentiert, kann der Nutzer entweder auf die Anzeige tippen und zur Zielseite weitergeleitet werden oder die Anzeige schließen und zur App zurückkehren. Fallstudie.

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

Vorbereitung

Richten Sie zuerst 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 zur Sperrung Ihres Kontos kommen.

Testanzeigen lassen sich unter iOS am einfachsten mit unserer speziellen Test-Anzeigenblock-ID für Interstitials laden:
/21775744923/example/interstitial

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

Weitere Informationen zu Google Mobile Ads SDK Testanzeigen finden Sie unter Testanzeigen aktivieren.

Implementierung

Die wichtigsten Schritte zum Einbinden von Interstitial-Anzeigen sind:

  1. Anzeige laden
  2. Für Callbacks registrieren
  3. Anzeige präsentieren

Anzeige laden

Eine Anzeige wird mit der load(adUnitID:request) Methode in der GAMInterstitialAd Klasse geladen.

Swift

fileprivate func loadInterstitial() async {
  do {
    interstitial = try await AdManagerInterstitialAd.load(
      with: "/21775744923/example/interstitial", request: AdManagerRequest())
    interstitial?.fullScreenContentDelegate = self
  } catch {
    print("Failed to load interstitial ad with error: \(error.localizedDescription)")
  }
}

SwiftUI

import GoogleMobileAds

class InterstitialViewModel: NSObject, FullScreenContentDelegate {
  private var interstitialAd: InterstitialAd?

  func loadAd() async {
    do {
      interstitialAd = try await InterstitialAd.load(
        with: "ca-app-pub-3940256099942544/4411468910", request: Request())
      interstitialAd?.fullScreenContentDelegate = self
    } catch {
      print("Failed to load interstitial ad with error: \(error.localizedDescription)")
    }
  }

Objective-C

[GAMInterstitialAd loadWithAdManagerAdUnitID:@"/21775744923/example/interstitial"
                                     request:[GAMRequest 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;
                           }];

Für Callbacks registrieren

Damit Sie Benachrichtigungen zu Präsentationsereignissen erhalten, müssen Sie GADFullScreenContentDelegate der Eigenschaft fullScreenContentDelegate der zurückgegebenen Anzeige zuweisen:

Swift

interstitial?.fullScreenContentDelegate = self

SwiftUI

interstitialAd?.fullScreenContentDelegate = self

Objective-C

self.interstitial.fullScreenContentDelegate = self;

Das Protokoll GADFullScreenContentDelegate verarbeitet Callbacks für den Fall, dass die Anzeige erfolgreich oder nicht erfolgreich präsentiert wird und wenn sie geschlossen wird. Der folgende Code zeigt, wie das Protokoll implementiert wird:

Swift

func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidRecordClick(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func ad(_ ad: FullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
  print("\(#function) called with error: \(error.localizedDescription)")
  // Clear the interstitial ad.
  interstitial = nil
}

func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
  // Clear the interstitial ad.
  interstitial = nil
}

SwiftUI

func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidRecordClick(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func ad(
  _ ad: FullScreenPresentingAd,
  didFailToPresentFullScreenContentWithError error: Error
) {
  print("\(#function) called")
}

func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
  // Clear the interstitial ad.
  interstitialAd = nil
}

Objective-C

- (void)adDidRecordImpression:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)adDidRecordClick:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)ad:(id<GADFullScreenPresentingAd>)ad
    didFailToPresentFullScreenContentWithError:(NSError *)error {
  NSLog(@"%s called with error: %@", __PRETTY_FUNCTION__, error.localizedDescription);
  // Clear the interstitial ad.
  self.interstitial = nil;
}

- (void)adWillPresentFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)adWillDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)adDidDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
  // Clear the interstitial ad.
  self.interstitial = nil;
}

GAMInterstitialAd ist ein Einmalobjekt. Das bedeutet, dass eine Interstitial-Anzeige nicht noch einmal präsentiert werden kann, nachdem sie bereits einmal ausgeliefert wurde. Es empfiehlt sich, eine weitere Interstitial-Anzeige in der Methode adDidDismissFullScreenContent: für GADFullScreenContentDelegate zu laden, damit die nächste Interstitial-Anzeige geladen wird, sobald die vorherige geschlossen wurde.

Anzeige präsentieren

Interstitial-Anzeigen sollten während natürlicher Pausen im Ablauf einer App eingeblendet werden, z. B. zwischen den Levels eines Spiels, oder nachdem der Nutzer eine Aufgabe abgeschlossen hat.

Swift

ad.present(from: self!)

SwiftUI

Sie können auf UI-Ereignisse in der Ansicht warten, um zu bestimmen, wann die Anzeige präsentiert werden soll.

var body: some View {
  // ...
  }
  .onChange(of: countdownTimer.isComplete) { newValue in
    showGameOverAlert = newValue
  }
  .alert(isPresented: $showGameOverAlert) {
    Alert(
      title: Text("Game Over"),
      message: Text("You lasted \(countdownTimer.countdownTime) seconds"),
      dismissButton: .cancel(
        Text("OK"),
        action: {
          viewModel.showAd()
        }))

Präsentieren Sie die Interstitial-Anzeige über das Ansichtsmodell:

func showAd() {
  guard let interstitialAd = interstitialAd else {
    return print("Ad wasn't ready.")
  }

  interstitialAd.present(from: nil)
}

Objective-C

[self.interstitial presentFromRootViewController:self];

Best Practices

Überlegen Sie, ob Interstitial-Anzeigen der richtige Anzeigentyp für Ihre App sind.
Interstitial-Anzeigen funktionieren am besten in Apps mit natürlichen Übergangspunkten. Ein solcher Punkt ist beispielsweise das Ende einer Aufgabe in einer App, etwa wenn ein Bild geteilt oder ein Level in einem Spiel abgeschlossen wird. Da der Nutzer eine Pause erwartet, können Sie eine Interstitial-Anzeige präsentieren, ohne die Nutzererfahrung zu beeinträchtigen. Überlegen Sie, an welchen Stellen im Workflow Ihrer App Sie Interstitial-Anzeigen präsentieren und wie der Nutzer wahrscheinlich reagieren wird.
Denken Sie daran, die Aktion zu pausieren, wenn Sie eine Interstitial-Anzeige präsentieren.
Es gibt verschiedene Arten von Interstitial-Anzeigen: Text-, Bild-, Videoanzeigen und mehr. Wenn Ihre App eine Interstitial-Anzeige präsentiert, muss sie auch die Verwendung einiger Ressourcen unterbrechen, damit die Anzeige diese nutzen kann. Wenn Sie beispielsweise den Aufruf zum Präsentieren einer Interstitial-Anzeige ausführen, pausieren Sie die Audioausgabe Ihrer App. Sie können die Wiedergabe von Sounds im adDidDismissFullScreenContent: Ereignishandler fortsetzen, der aufgerufen wird, wenn der Nutzer die Interaktion mit der Anzeige beendet hat. Außerdem sollten Sie alle rechenintensiven Aufgaben (z. B. eine Spielschleife) vorübergehend anhalten, während die Anzeige präsentiert wird. So wird verhindert, dass der Nutzer langsame oder nicht reagierende Grafiken oder ruckelnde Videos sieht.
Planen Sie ausreichend Ladezeit ein.
Es ist wichtig, Interstitial-Anzeigen zum richtigen Zeitpunkt zu präsentieren. Außerdem sollte der Nutzer nicht warten müssen, bis sie geladen sind. Wenn Sie die Anzeige im Voraus laden, bevor Sie sie präsentieren möchten, ist sichergestellt, dass Ihre App eine vollständig geladene Interstitial-Anzeige bereit hat, wenn es Zeit ist, sie zu präsentieren.
Überhäufen Sie die Nutzer nicht mit Anzeigen.
Die Häufigkeit von Interstitial-Anzeigen in Ihrer App zu erhöhen, mag zwar eine gute Möglichkeit sein, den Umsatz zu steigern, kann aber auch die Nutzerfreundlichkeit beeinträchtigen und die Klickraten senken. Nutzer sollten bei der Verwendung der App nicht so häufig unterbrochen werden, dass sie die Lust verlieren.
Verwenden Sie den Callback für den Abschluss des Ladevorgangs nicht, um das Interstitial zu präsentieren.
Dies kann zu einer schlechten Nutzererfahrung führen. Laden Sie die Anzeige stattdessen vorab, bevor Sie sie präsentieren müssen. Prüfen Sie dann mit der Methode canPresentFromRootViewController:error: für GAMInterstitialAd, ob sie präsentiert werden kann.

Beispiele auf GitHub

Vollständige Beispiele für Interstitial-Anzeigen in Ihrer bevorzugten Sprache:

Nächste Schritte