Gli annunci interstitial sono annunci a schermo intero che coprono l'interfaccia di un'app finché non vengono chiusi dall'utente. Vengono in genere visualizzati in punti di transizione naturali nel flusso di un'app, ad esempio tra le varie attività o durante la pausa tra i livelli di un gioco. Quando un'app mostra un annuncio interstitial, l'utente può toccare l'annuncio e continuare fino alla destinazione o chiuderlo e tornare all'app. Case study.
Questa guida mostra come integrare gli annunci interstitial in un'app per iOS.
Prerequisiti
- SDK Google Mobile Ads 8.0.0 o versioni successive.
- Completa la Guida introduttiva.
Esegui sempre i test con gli annunci di prova
Quando crei ed esegui test sulle tue app, assicurati di utilizzare annunci di prova anziché annunci di produzione live. In caso contrario, il tuo account potrebbe essere sospeso.
Il modo più semplice per caricare gli annunci di prova è utilizzare il nostro ID unità pubblicitaria di prova dedicato
per gli interstitial iOS:
ca-app-pub-3940256099942544/4411468910
È stato configurato appositamente per restituire annunci di test per ogni richiesta e puoi utilizzarlo liberamente nelle tue app durante la codifica, i test e il debug. Assicurati solo di sostituirlo con il tuo ID unità pubblicitaria prima di pubblicare l'app.
Per saperne di più sul funzionamento degli annunci di test dell'SDK Mobile Ads, consulta la sezione Annunci di test.
Implementazione
I passaggi principali per integrare gli annunci interstitial sono:
- Carica un annuncio.
- Registrati per i callback.
- Visualizza l'annuncio.
Caricare un annuncio
Il caricamento di un annuncio viene eseguito utilizzando il metodo
load(adUnitID:request)
nella classe
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;
}];
Registrarsi per i callback
Per ricevere notifiche per gli eventi di presentazione, devi assegnare la proprietà
GADFullScreenContentDelegate to the
fullScreenContentDelegate` dell'annuncio restituito:
Swift
interstitial?.fullScreenContentDelegate = self
SwiftUI
interstitialAd?.fullScreenContentDelegate = self
Objective-C
self.interstitial.fullScreenContentDelegate = self;
Il protocollo GADFullScreenContentDelegate
gestisce i callback per quando l'annuncio
viene visualizzato correttamente o meno e quando viene chiuso. Il seguente
codice mostra come implementare il protocollo:
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
è un oggetto monouso. Ciò
significa che una volta mostrato un annuncio interstitial, non può essere mostrato di nuovo. Una best practice
consiste nel caricare un altro annuncio interstitial nel
metodo adDidDismissFullScreenContent:
su GADFullScreenContentDelegate
in modo
che il caricamento dell'annuncio interstitial successivo inizi non appena viene chiuso quello precedente.
Visualizzare l'annuncio
Gli interstitial devono essere visualizzati durante le pause naturali nel flusso di un'app. Un buon esempio è tra i livelli di un gioco o dopo che l'utente ha completato un'attività.
Swift
ad.present(from: self!)
SwiftUI
Ascolta gli eventi dell'interfaccia utente nella visualizzazione per determinare quando mostrare l'annuncio.
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()
}))
Presenta l'annuncio interstitial dal modello di visualizzazione:
func showAd() {
guard let interstitialAd = interstitialAd else {
return print("Ad wasn't ready.")
}
interstitialAd.present(from: nil)
}
Objective-C
[self.interstitial presentFromRootViewController:self];
Best practice
- Valuta se gli annunci interstitial sono il tipo di annuncio giusto per la tua app.
- Gli annunci interstitial funzionano meglio nelle app con punti di transizione naturali. La conclusione di un'attività all'interno di un'app, come la condivisione di un'immagine o il completamento di un livello di un gioco, crea un punto di transizione. Poiché l'utente si aspetta una pausa nell'azione, è facile presentare un annuncio interstitial senza interrompere la sua esperienza. Assicurati di considerare in quali punti del flusso di lavoro della tua app mostrerai gli annunci interstitial e come è probabile che l'utente risponda.
- Ricorda di mettere in pausa l'azione quando viene visualizzato un annuncio interstitial.
- Esistono diversi tipi di annunci interstitial: di testo, illustrati, video e altro ancora. È importante assicurarsi che quando la tua app mostra un
annuncio interstitial, sospenda anche l'utilizzo di alcune risorse per consentire all'annuncio di
sfruttarle. Ad esempio, quando chiami per visualizzare un annuncio
interstiziale, assicurati di mettere in pausa qualsiasi output audio prodotto dalla tua app.
Puoi riprendere la riproduzione dei suoni nel
gestore eventi
adDidDismissFullScreenContent:
, che verrà richiamato quando l'utente avrà terminato l'interazione con l'annuncio. Inoltre, valuta la possibilità di interrompere temporaneamente qualsiasi attività di calcolo intensa (ad esempio un ciclo di gioco) durante la visualizzazione dell'annuncio. In questo modo, l'utente non riscontrerà problemi di lentezza o mancata risposta della grafica o di riproduzione video a scatti. - Consenti un tempo di caricamento adeguato.
- Proprio come è importante assicurarsi di mostrare gli annunci interstitial in un momento appropriato, è anche importante assicurarsi che l'utente non debba aspettare che vengano caricati. Il caricamento anticipato dell'annuncio prima della pubblicazione può garantire che la tua app abbia un annuncio interstitial completamente caricato e pronto quando arriva il momento di mostrarlo.
- Non inondare l'utente di annunci.
- Sebbene l'aumento della frequenza degli annunci interstitial nella tua app possa sembrare un ottimo modo per aumentare le entrate, può anche peggiorare l'esperienza utente e ridurre le percentuali di clic. Assicurati che gli utenti non vengano interrotti così spesso da non riuscire più a godersi l'utilizzo della tua app.
- Non utilizzare il callback di completamento del caricamento per mostrare l'interstitial.
- Ciò può causare un'esperienza utente scadente. Carica invece l'annuncio prima di doverlo
mostrare. Quindi, controlla il metodo
canPresentFromRootViewController:error:
suGADInterstitialAd
per scoprire se è pronto per essere mostrato.
Risorse aggiuntive
Esempi su GitHub
Visualizza gli esempi completi di annunci interstitial nella tua lingua preferita:
Tutorial video di Mobile Ads Garage
Casi di successo
Passaggi successivi
- Se non l'hai ancora fatto, crea la tua unità pubblicitaria interstitial nell'interfaccia utente di AdMob.
- Scopri di più sul targeting degli annunci e sulle linee guida per gli annunci interstitial.
- Scopri di più sulla privacy degli utenti.