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
- Google Mobile Ads SDK 8.0.0 oder höher
- Führen Sie die Schritte im Startleitfaden aus.
Verwenden Sie immer Testanzeigen
Verwenden Sie beim Erstellen und Testen Ihrer Apps Testanzeigen anstelle von aktiven Produktionsanzeigen. Andernfalls kann Ihr Konto gesperrt werden.
Am einfachsten lassen sich Testanzeigen laden, wenn Sie die spezielle Test-Anzeigenblock-ID für iOS-Interstitials verwenden:
ca-app-pub-3940256099942544/4411468910
Es wurde speziell so konfiguriert, dass für jede Anfrage Testanzeigen zurückgegeben werden. Sie können es in Ihren eigenen Apps verwenden, während Sie Code schreiben, testen und debuggen. Achten Sie darauf, sie vor der Veröffentlichung Ihrer App durch Ihre eigene Anzeigenblock-ID zu ersetzen.
Weitere Informationen zur Funktionsweise von Testanzeigen im Mobile Ads SDK finden Sie unter Testanzeigen.
Implementierung
Die wichtigsten Schritte zur Integration von Interstitial-Anzeigen:
- Laden Sie eine Anzeige.
- Registrieren Sie sich für Callbacks.
- Die Anzeige wird ausgeliefert.
Anzeige laden
Anzeigen werden mit der Methode load(adUnitID:request)
der Klasse GADInterstitialAd
geladen.
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController {
private var interstitial: GADInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
Task {
do {
interstitial = try await GADInterstitialAd.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) GADInterstitialAd *interstitial;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GADRequest *request = [GADRequest request];
[GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
request:request
completionHandler:^(GADInterstitialAd *ad, NSError *error) {
if (error) {
NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
return;
}
self.interstitial = ad;
}];
}
Für Callbacks registrieren
Wenn Sie Benachrichtigungen zu Präsentationsereignissen erhalten möchten, müssen Sie das GADFullScreenContentDelegate
-Protokoll implementieren und der fullScreenContentDelegate
-Property der zurückgegebenen Anzeige zuweisen. Das GADFullScreenContentDelegate
-Protokoll verarbeitet Callbacks für den erfolgreichen oder fehlgeschlagenen Anzeigenbereitstellungsvorgang und für das Schließen der Anzeige. Im folgenden Code wird gezeigt, wie das Protokoll implementiert und der Anzeige zugewiesen wird:
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController, GADFullScreenContentDelegate {
private var interstitial: GADInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
Task {
do {
interstitial = try await GADInterstitialAd.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) GADInterstitialAd *interstitial;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GADRequest *request = [GADRequest request];
[GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
request:request
completionHandler:^(GADInterstitialAd *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.");
}
GADInterstitialAd
ist ein Einmalobjekt. Das bedeutet, dass eine Interstitial-Anzeige, die einmal ausgeliefert wurde, nicht noch einmal ausgeliefert werden kann. Es empfiehlt sich, in der adDidDismissFullScreenContent:
-Methode auf GADFullScreenContentDelegate
eine weitere Interstitial-Anzeige zu laden, damit die nächste Interstitial-Anzeige geladen wird, sobald die vorherige geschlossen wird.
Anzeige präsentieren
Interstitials sollten bei natürlichen Pausen im Ablauf einer App eingeblendet werden. Ein gutes Beispiel ist die Pause zwischen den Levels eines Spiels oder nach Abschluss einer Aufgabe.
Swift
guard let interstitial = interstitial else {
return print("Ad wasn't ready.")
}
// The UIViewController parameter is an optional.
interstitial.present(fromRootViewController: nil)
SwiftUI
Über die Benutzeroberfläche können Sie Ereignisse erfassen, um zu bestimmen, wann die Anzeige ausgeliefert 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 über das 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 die richtige Art von Anzeigen für Ihre App sind.
- Interstitial-Anzeigen funktionieren am besten in Apps mit natürlichen Übergangspunkten. Ein solcher Punkt wird durch den Abschluss einer Aufgabe in einer App wie dem Teilen eines Bildes oder dem Abschließen eines Spiellevels erstellt. Da Nutzer eine Pause in der Aktion erwarten, ist es einfach, eine Interstitial-Anzeige einzublenden, ohne die Nutzererfahrung zu beeinträchtigen. Berücksichtigen Sie, an welchen Stellen im Workflow Ihrer App Sie Interstitial-Anzeigen schalten und wie Nutzer wahrscheinlich reagieren.
- Denken Sie daran, die Aktion zu pausieren, wenn eine Interstitial-Anzeige ausgeliefert wird.
- Es gibt verschiedene Arten von Interstitial-Anzeigen, z. B. Text-, Bild- und Videoanzeigen. Achten Sie darauf, dass die Verwendung einiger Ressourcen in Ihrer App ausgesetzt wird, wenn eine Interstitialanzeige eingeblendet wird, damit die Anzeige diese Ressourcen nutzen kann. Wenn Sie beispielsweise die Anzeige eines Interstitials aufrufen, sollten Sie alle Audioausgaben Ihrer App pausieren. Sie können die Wiedergabe von Tönen im Ereignishandler
adDidDismissFullScreenContent:
fortsetzen, der aufgerufen wird, wenn der Nutzer die Interaktion mit der Anzeige beendet hat. Außerdem sollten Sie alle intensiven Rechenaufgaben (z. B. einen Gameloop) vorübergehend anhalten, während die Anzeige eingeblendet wird. So wird sichergestellt, dass die Grafik nicht zu langsam oder nicht reaktionsschnell ist und das Video nicht ruckelt. - Planen Sie ausreichend Zeit für das Laden ein.
- Interstitial-Anzeigen sollten nicht nur zum richtigen Zeitpunkt ausgeliefert werden, sondern auch schnell geladen werden, damit Nutzer nicht warten müssen. Wenn Sie die Anzeige im Voraus laden, bevor Sie sie präsentieren möchten, ist in Ihrer App eine vollständig geladene Interstitial-Anzeige verfügbar, wenn es an der Zeit ist, sie einzublenden.
- Überschütten 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 richtig nutzen können.
- Verwenden Sie den Callback zum Abschluss des Ladevorgangs nicht, um das Interstitial anzuzeigen.
- Das kann zu einer schlechten Nutzererfahrung führen. Laden Sie die Anzeige stattdessen vorab, bevor Sie sie ausliefern müssen. Prüfen Sie dann die
canPresentFromRootViewController:error:
-Methode aufGADInterstitialAd
, um herauszufinden, ob sie angezeigt werden kann.
Zusätzliche Ressourcen
Beispiele auf GitHub
Vollständige Beispiele für Interstitial-Anzeigen in Ihrer bevorzugten Sprache ansehen:
Videoanleitungen der Mobile Ads Garage
Erfolgsgeschichten
Nächste Schritte
- Falls noch nicht geschehen, erstellen Sie einen eigenen Anzeigenblock für Interstitial-Anzeigen in der AdMob-Benutzeroberfläche.
- Weitere Informationen zum Anzeigen-Targeting und zu den Richtlinien für Interstitial-Anzeigen
- Weitere Informationen zum Datenschutz für Nutzer