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 Levels. Wenn in einer App eine Interstitial-Anzeige eingeblendet wird, kann der Nutzer entweder auf die Anzeige tippen und zum Ziel weitergeleitet werden oder sie schließen und zur App zurückkehren. Fallstudie

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

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 Interstitials laden:
/21775744923/example/interstitial

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 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. Registrieren Sie sich für Rückrufe.
  3. Die Anzeige wird ausgeliefert.

Anzeige laden

Anzeigen werden mit der Methode load(adUnitID:request) der Klasse GAMInterstitialAd 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

Wenn Sie Benachrichtigungen zu Präsentationsereignissen erhalten möchten, müssen Sie die GADFullScreenContentDelegate der fullScreenContentDelegate-Property der zurückgegebenen Anzeige zuweisen:

Swift

interstitial?.fullScreenContentDelegate = self

SwiftUI

interstitialAd?.fullScreenContentDelegate = self

Objective-C

self.interstitial.fullScreenContentDelegate = self;

Das GADFullScreenContentDelegate-Protokoll verarbeitet Callbacks, wenn die Anzeige erfolgreich oder nicht erfolgreich präsentiert 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 nach der Auslieferung nicht noch einmal ausgeliefert werden kann. Am besten laden Sie eine weitere Interstitial-Anzeige in der Methode adDidDismissFullScreenContent: für GADFullScreenContentDelegate, damit die nächste Interstitial-Anzeige geladen wird, sobald die vorherige geschlossen wird.

Anzeige darstellen

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

Warten Sie auf UI-Ereignisse in der Ansicht, um zu bestimmen, wann die Anzeige eingeblendet 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 entsteht, wenn eine Aufgabe in einer App abgeschlossen wird, z. B. wenn ein Bild geteilt oder ein Level in einem Spiel abgeschlossen wird. Da der Nutzer eine Unterbrechung der Aktion erwartet, kann eine Interstitial-Anzeige präsentiert werden, ohne dass die Nutzererfahrung beeinträchtigt wird. Überlege dir, an welchen Stellen im Workflow deiner App du Interstitial-Anzeigen einblenden möchtest und wie der Nutzer wahrscheinlich darauf reagiert.
Denken Sie daran, die Aktion zu pausieren, wenn eine Interstitial-Anzeige eingeblendet wird.
Es gibt verschiedene Arten von Interstitial-Anzeigen, darunter Text-, Bild- und Videoanzeigen. Wenn in Ihrer App eine Interstitial-Anzeige eingeblendet wird, sollten Sie die Nutzung einiger Ressourcen aussetzen, damit die Anzeige diese nutzen kann. Wenn Sie beispielsweise eine Interstitial-Anzeige einblenden, sollten Sie die Audioausgabe Ihrer App pausieren. Sie können die Audiowiedergabe im Event-Handler adDidDismissFullScreenContent: fortsetzen, der aufgerufen wird, wenn der Nutzer die Interaktion mit der Anzeige beendet hat. Außerdem sollten Sie rechenintensive Aufgaben wie eine Spielschleife vorübergehend anhalten, während die Anzeige eingeblendet wird. So wird sichergestellt, dass die Grafik nicht langsam oder gar nicht reagiert und Videos nicht ruckeln.
Planen Sie ausreichend Ladezeit ein.
Genauso wichtig wie die Anzeige von Interstitial-Anzeigen zu einem geeigneten Zeitpunkt ist es, dafür zu sorgen, dass der Nutzer nicht auf das Laden der Anzeigen warten muss. Wenn Sie die Anzeige vorab laden, kann Ihre App eine vollständig geladene Interstitial-Anzeige bereithalten, wenn sie eingeblendet werden soll.
Ü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. Achten Sie darauf, dass Nutzer nicht so häufig unterbrochen werden, dass sie Ihre App nicht mehr gern verwenden.
Verwenden Sie nicht den Callback für den Abschluss des Ladevorgangs, um das Interstitial einzublenden.
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 die Anzeige bereit ist.

Beispiele auf GitHub

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

Nächste Schritte