Interstitial-Anzeigen

Interstitial-Anzeigen sind Vollbildanzeigen, die die Benutzeroberfläche einer App verdecken, bis die vom Nutzer geschlossen wurden. Sie werden in der Regel an natürlichen Übergangspunkten innerhalb einer App eingeblendet, beispielsweise zwischen Aktivitäten oder in den Pausen zwischen den Levels eines Spiels. Wenn in einer App eine Interstitial-Anzeige eingeblendet wird, hat der Nutzer die Wahl. um entweder auf die Anzeige zu tippen und zur Ziel-URL zu gelangen, oder sie schließen und zurückkehren. in der App. Fallstudie.

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

Vorbereitung

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

Immer mit Testanzeigen testen

Verwenden Sie beim Entwickeln und Testen Ihrer Apps nur Testanzeigen, Live-Produktionsanzeigen. Andernfalls kann Ihr Konto gesperrt werden.

Am einfachsten lassen sich Testanzeigen mit unserer Testanzeigenblock-ID laden. für iOS-Interstitials:
ca-app-pub-3940256099942544/4411468910

Sie wurde speziell so konfiguriert, dass bei jeder Anfrage Testanzeigen zurückgegeben werden. können Sie es beim Programmieren, Testen und Debuggen in Ihren eigenen Apps verwenden. Machen Sie einfach ersetzen Sie sie vor dem Veröffentlichen Ihrer App durch Ihre Anzeigenblock-ID.

Weitere Informationen zur Funktionsweise von 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. Blenden Sie die Anzeige ein und bearbeiten Sie das Prämienereignis.

Anzeige laden

Das Laden einer Anzeige erfolgt mithilfe der Methode load(adUnitID:request) für den GADInterstitial.

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var interstitial: GADInterstitial?

  override func viewDidLoad() {
    super.viewDidLoad()

    Task {
      do {
        interstitial = try await GADInterstitial.load(
          withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
      } catch {
        print("Failed to load interstitial ad with error: \(error.localizedDescription)")
      }
    }
  }
}

SwiftUI

import GoogleMobileAds

class InterstitialViewModel: NSObject, GADFullScreenContentDelegate {
  private var interstitialAd: GADInterstitialAd?

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

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GADInterstitial *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GADRequest *request = [GADRequest request];
  [GADInterstitial loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
      request:request
      completionHandler:^(GADInterstitial *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 über Präsentationsereignisse zu erhalten, müssen Sie das Protokoll GADFullScreenContentDelegate und weisen Sie es dem fullScreenContentDelegate-Eigenschaft der zurückgegebenen Anzeige. Die Das GADFullScreenContentDelegate-Protokoll verarbeitet Rückrufe, wenn die Anzeige erfolgreich oder nicht erfolgreich präsentiert und wenn sie geschlossen wird. Die folgenden Code veranschaulicht, wie das Protokoll implementiert und der Anzeige zugewiesen wird:

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var interstitial: GADInterstitial?

  override func viewDidLoad() {
    super.viewDidLoad()

    Task {
      do {
        interstitial = try await GADInterstitial.load(
          withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
        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.")
  }
}

SwiftUI

Weisen Sie der zurückgegebenen Anzeige das Attribut fullScreenContentDelegate zu:

interstitialAd?.fullScreenContentDelegate = self

Implementieren Sie das Protokoll:

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

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

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

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

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

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

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController () <GADFullScreenContentDelegate>

@property(nonatomic, strong) GADInterstitial *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GADRequest *request = [GADRequest request];
  [GADInterstitial loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
      request:request
      completionHandler:^(GADInterstitial *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.");
}

GADInterstitial ist ein Objekt zur einmaligen Verwendung. Dieses Sobald eine Interstitial-Anzeige ausgeliefert wurde, kann sie nicht mehr ausgeliefert werden. Ein bester das Laden einer weiteren Interstitial-Anzeige adDidDismissFullScreenContent:-Methode für GADFullScreenContentDelegate, sodass wird die nächste Interstitial-Anzeige geladen, sobald die vorherige geschlossen.

Anzeige einblenden

Interstitials sollten in natürlichen Pausen einer App eingeblendet werden. Ein gutes Beispiel ist zwischen den Leveln eines Spiels oder nachdem der Nutzer eine Aufgabe abgeschlossen hat.

Swift

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

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

SwiftUI

Überwachen Sie UI-Ereignisse in der Ansicht, um zu bestimmen, wann die Anzeige geschaltet 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()
        }))

Interstitial-Anzeige aus dem Ansichtsmodell präsentieren:

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

  interstitialAd.present(fromRootViewController: nil)
}

Objective-C

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

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. Das Abschließen einer Aufgabe in einer App, z. B. das Teilen eines Bildes oder das Ausführen einer ein solches Level schaffen. Da der Nutzer eine Pause im können Sie eine Interstitial-Anzeige präsentieren, ohne die Nutzererfahrung. Überlegen Sie genau, an welchen Stellen im Workflow Ihrer App Sie Display-Interstitial-Anzeigen und die Wahrscheinlichkeit, dass der Nutzer darauf reagiert.
Pausieren Sie die Aktion, wenn eine Interstitial-Anzeige eingeblendet wird.
Es gibt verschiedene Arten von Interstitial-Anzeigen: Text-, Bild-, Video und mehr. Wenn in Ihrer App ein Interstitial-Anzeige aktiviert, setzt sie auch die Nutzung einiger Ressourcen aus, damit die Anzeige und sie für sich zu nutzen. Wenn Sie beispielsweise die Anzeige eines Interstitial-Anzeige verwenden, unterbrechen Sie die Audioausgabe in Ihrer App. Du kannst die Tonwiedergabe fortsetzen in der adDidDismissFullScreenContent: Event-Handler, der aufgerufen wird, wenn der Nutzer die Interaktion beendet hat mit der Anzeige. Außerdem sollten Sie intensive Berechnungen vorübergehend anhalten. (z. B. eine Spielschleife), während die Anzeige eingeblendet wird. Dadurch wird sichergestellt, dass der Nutzer keine langsame oder nicht reagierende Grafik oder ruckelige Grafik aufweist .
Achten Sie auf eine ausreichende Ladezeit.
Die Interstitial-Anzeigen sollten Zeit haben, ist es auch wichtig, sicherzustellen, dass die Nutzenden warten Sie, bis sie geladen sind. Laden Sie die Anzeige im Voraus, bevor sie ausgeliefert werden soll damit in Ihrer App eine vollständig geladene Interstitial-Anzeige bereitsteht, wird es Zeit, einen zu präsentieren.
Überschwemmen Sie Nutzer nicht mit Anzeigen.
Es mag auf den ersten Blick scheinen, die Häufigkeit von Interstitial-Anzeigen in Ihrer App zu erhöhen. eine gute Möglichkeit, den Umsatz zu steigern, kann dies auch die Nutzererfahrung beeinträchtigen. und niedrigere Klickraten. Achten Sie darauf, dass Nutzende nicht so häufig wurde unterbrochen, dass sie deine App nicht mehr nutzen können.
Verwenden Sie nicht den Callback für den Abschluss des Ladevorgangs, um die Interstitial-Anzeige auszuliefern.
Dies kann zu einer schlechten Nutzererfahrung führen. Laden Sie die Anzeige stattdessen im Voraus, um sie anzuzeigen. Prüfen Sie dann die Methode canPresentFromRootViewController:error: am GADInterstitial, um herauszufinden, angezeigt.

Zusätzliche Ressourcen

Beispiele auf GitHub

Sehen Sie sich die vollständigen Beispiele für Interstitial-Anzeigen in Ihrer bevorzugten Sprache an:

Videoanleitungen der Google Zukunftswerkstatt für mobile Anzeigen

Erfolgsgeschichten

Nächste Schritte