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:
- Anzeige laden
- Für Callbacks registrieren
- 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ürGAMInterstitialAd, ob sie präsentiert werden kann.
Beispiele auf GitHub
Vollständige Beispiele für Interstitial-Anzeigen in Ihrer bevorzugten Sprache:
Nächste Schritte
- Weitere Informationen zur Anzeigenausrichtung und zu den Richtlinien für Interstitial-Anzeigen.
- Weitere Informationen zum Datenschutz.