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 in den Pausen zwischen den Levels eines Spiels. Wenn in einer App eine Interstitial-Anzeige eingeblendet wird, 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 erfahren Sie, wie Sie Interstitial-Anzeigen in eine iOS-App einbinden.
Vorbereitung
- Führen Sie die Schritte im Startleitfaden aus.
Immer Testanzeigen verwenden
Verwenden Sie beim Entwickeln und Testen Ihrer Apps Testanzeigen anstelle von Live-Anzeigen. Andernfalls kann es zu einer Kontosperrung kommen.
Am einfachsten lassen sich Testanzeigen laden, wenn Sie unsere spezielle Testanzeigenblock-ID für iOS-Interstitials verwenden:
ca-app-pub-3940256099942544/4411468910
Sie ist speziell dafür konfiguriert, für jede Anfrage Testanzeigen zurückzugeben. Sie können sie also beim Programmieren, Testen und Debuggen in Ihren eigenen Apps verwenden. Denken Sie daran, 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 zum Einbinden von Interstitial-Anzeigen sind:
- Laden Sie eine Anzeige.
- Callbacks registrieren
- Anzeige ausliefern
Anzeige laden
Das Laden einer Anzeige erfolgt mit der Methode load(adUnitID:request)
für die Klasse GADInterstitialAd
.
Swift
fileprivate func loadInterstitial() async {
do {
interstitial = try await InterstitialAd.load(
with: "ca-app-pub-3940256099942544/4411468910", request: Request())
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
[GADInterstitialAd
loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
request:[GADRequest 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;
}];
Callbacks registrieren
Damit Sie Benachrichtigungen zu Präsentationsereignissen erhalten, müssen Sie der zurückgegebenen Anzeige die Eigenschaft GADFullScreenContentDelegate to the
fullScreenContentDelegate` zuweisen:
Swift
interstitial?.fullScreenContentDelegate = self
SwiftUI
interstitialAd?.fullScreenContentDelegate = self
Objective-C
self.interstitial.fullScreenContentDelegate = self;
Das GADFullScreenContentDelegate
-Protokoll 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;
}
GADInterstitialAd
ist ein Einmalobjekt. Das bedeutet, dass eine Interstitial-Anzeige nicht noch einmal ausgeliefert werden kann, nachdem sie bereits einmal ausgeliefert wurde. Es empfiehlt sich, in der Methode adDidDismissFullScreenContent:
auf GADFullScreenContentDelegate
eine weitere Interstitial-Anzeige zu laden, damit die nächste Interstitial-Anzeige geladen wird, sobald die vorherige geschlossen wird.
Anzeige einblenden
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 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()
}))
Interstitial-Anzeige über das View-Modell präsentieren:
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 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 beispielsweise durch den Abschluss einer Aufgabe in einer App geschaffen, etwa durch das Teilen eines Bildes oder das Abschließen eines Levels in einem Spiel. Da der Nutzer eine Unterbrechung der Aktion erwartet, kann eine Interstitial-Anzeige problemlos präsentiert werden, ohne dass die Nutzererfahrung beeinträchtigt wird. Überlegen Sie, an welchen Stellen im Workflow Ihrer App Sie Interstitial-Anzeigen einblenden und wie der Nutzer wahrscheinlich reagieren wird.
- Denken Sie daran, die Aktion zu pausieren, wenn eine Interstitial-Anzeige ausgeliefert wird.
- Es gibt verschiedene Arten von Interstitial-Anzeigen: Text-, Bild- und Videoanzeigen. Wenn in Ihrer App eine Interstitial-Anzeige ausgeliefert wird, muss die App die Verwendung bestimmter Ressourcen unterbrechen, damit die Anzeige diese nutzen kann. Wenn Sie beispielsweise einen Aufruf zum Anzeigen eines Interstitials ausführen, müssen Sie die gesamte Audioausgabe Ihrer App pausieren. 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 während der Anzeigendarstellung rechenintensive Aufgaben wie eine Spielschleife vorübergehend anhalten. So wird sichergestellt, dass der Nutzer keine langsamen oder nicht reagierenden Grafiken oder ruckelnde Videos sieht. - Planen Sie ausreichend Ladezeit ein.
- Es ist wichtig, dass Interstitial-Anzeigen zum richtigen Zeitpunkt eingeblendet werden. Außerdem sollten Nutzer nicht warten müssen, bis sie geladen sind. Wenn Sie die Anzeige im Voraus laden, bevor Sie sie einblenden möchten, ist sichergestellt, dass Ihre App eine vollständig geladene Interstitial-Anzeige bereithält, wenn es an der Zeit ist, eine einzublenden.
- Überhäufen Sie den Nutzer nicht mit Anzeigen.
- Auch wenn es verlockend sein mag, die Häufigkeit von Interstitial-Anzeigen in Ihrer App zu erhöhen, um den Umsatz zu steigern, kann dies 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 nutzen können.
- 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:
aufGADInterstitialAd
, ob sie angezeigt werden kann.
Zusätzliche Ressourcen
Beispiele auf GitHub
Hier finden Sie vollständige Beispiele für Interstitial-Anzeigen in Ihrer bevorzugten Sprache:
Video-Tutorials in 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 zur Anzeigenausrichtung und zu Richtlinien für Interstitial-Anzeigen
- Weitere Informationen zum Datenschutz