Gli annunci interstitial sono annunci a schermo intero che coprono l'interfaccia di un'app finché non vengono chiusi dall'utente. In genere vengono mostrati 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ò scegliere se toccare l'annuncio e continuare verso la relativa destinazione o chiuderlo e tornare all'app. Case study.
Questa guida illustra come integrare gli annunci interstitial in un'app per iOS.
Prerequisiti
Prima di continuare, configura Google Mobile Ads SDK.
Esegui sempre i test con gli annunci di prova
Durante la creazione e il test delle tue app, assicurati di utilizzare annunci di prova anziché annunci di prodotto. 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 test dedicato per gli annunci interstitial per iOS:
/21775744923/example/interstitial
È stato configurato appositamente per restituire annunci di prova per ogni richiesta e puoi utilizzarlo liberamente nelle tue app durante la programmazione, i test e il debug. Assicurati di sostituirlo con l'ID unità pubblicitaria prima di pubblicare l'app.
Per informazioni dettagliate sugli annunci di prova Google Mobile Ads SDK, consulta Attiva gli annunci di prova.
Implementazione
I passaggi principali per integrare gli annunci interstitial sono:
- Carica un annuncio.
- Registrati per i callback.
- Visualizza l'annuncio.
Carica un annuncio
Il caricamento di un annuncio viene eseguito utilizzando il metodo load(adUnitID:request) nella classe GAMInterstitialAd.
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;
}];
Registrati per i callback
Per ricevere notifiche per gli eventi di presentazione, devi assegnare
GADFullScreenContentDelegate alla proprietà 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 i casi in cui l'annuncio viene presentato correttamente o meno e quando viene ignorato. 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;
}
GAMInterstitialAd è 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 l'annuncio interstitial successivo inizi a caricarsi non appena l'annuncio precedente viene ignorato.
Visualizza l'annuncio
Gli interstitial devono essere mostrati 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 della UI 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 questo tipo. Poiché l'utente si aspetta un'interruzione dell'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 l'utente potrebbe rispondere.
- Ricordati di mettere in pausa l'azione quando mostri un annuncio interstitial.
- Esistono diversi tipi di annunci interstitial: di testo, illustrati, video e altro ancora. È importante assicurarsi che, quando l'app mostra un annuncio interstitial, sospenda anche l'utilizzo di alcune risorse per consentire all'annuncio di sfruttarle. Ad esempio, quando effettui la chiamata per visualizzare un annuncio interstitial, assicurati di mettere in pausa l'audio prodotto dalla tua app. Puoi riprendere la riproduzione dei suoni nel gestore di eventi
adDidDismissFullScreenContent:, che verrà richiamato quando l'utente avrà terminato di interagire con l'annuncio. Inoltre, valuta la possibilità di interrompere temporaneamente qualsiasi attività di calcolo intensa (ad esempio un ciclo di gioco) mentre l'annuncio viene visualizzato. In questo modo, l'utente non riscontrerà problemi di lentezza o mancata risposta della grafica o di video con interruzioni. - Prevedi un tempo di caricamento adeguato.
- Così come è importante assicurarsi di mostrare gli annunci interstitial al momento opportuno, è anche importante assicurarsi che l'utente non debba attendere il loro caricamento. Il caricamento dell'annuncio prima della visualizzazione può garantire che l'app abbia un annuncio interstitial completamente caricato e pronto per essere mostrato al momento opportuno.
- Non sovraccaricare l'utente con annunci.
- Aumentare la frequenza degli annunci interstitial nella tua app potrebbe sembrare un ottimo modo per incrementare le entrate, ma 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 utilizzare la tua app.
- Non utilizzare il callback di completamento del caricamento per mostrare l'interstitial.
- Questo può causare un'esperienza utente scadente. Invece, precarica l'annuncio prima di doverlo mostrare. Quindi, controlla il metodo
canPresentFromRootViewController:error:suGAMInterstitialAdper scoprire se è pronto per essere mostrato.
Esempi su GitHub
Visualizza gli esempi completi di annunci interstitial nella tua lingua preferita:
Passaggi successivi
- Scopri di più sul targeting degli annunci e sulle linee guida per gli annunci interstitial.
- Scopri di più sulla privacy dell'utente.