Annunci interstitial

Gli annunci interstitial sono annunci a schermo intero che coprono l'interfaccia di un'app finché non vengono chiusi dall'utente. In genere vengono 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 oppure chiuderlo e tornare all'app. Caso di studio.

Questa guida mostra 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

Quando crei e testi le 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 l'ID unità pubblicitaria di prova dedicato per gli interstitial di iOS:
ca-app-pub-3940256099942544/4411468910

È stato configurato appositamente per restituire annunci di prova 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 i dettagli sugli annunci di prova Google Mobile Ads SDK, consulta la sezione Attivare gli annunci di prova.

Implementazione

I passaggi principali per integrare gli annunci interstitial sono:

  1. Carica un annuncio.
  2. Registrati per i callback.
  3. Visualizza l'annuncio.

Carica un annuncio

Il caricamento di un annuncio viene eseguito utilizzando il load(adUnitID:request) metodo nella GADInterstitialAd classe.

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;
    }];

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 quando l'annuncio viene presentato 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 visualizzato, un annuncio interstitial non può essere visualizzato 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.

Visualizza 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 questo tipo. 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 workflow dell'app visualizzerai gli annunci interstitial e come è probabile che l'utente risponda.
Ricorda di mettere in pausa l'azione quando visualizzi un annuncio interstitial.
Esistono diversi tipi di annunci interstitial: di testo, illustrati, video e altro ancora. È importante assicurarsi che, quando l'app visualizza 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 qualsiasi output audio prodotto dalla tua app. Puoi riprendere la riproduzione dei suoni nel adDidDismissFullScreenContent: gestore di eventi, che verrà richiamato quando l'utente avrà finito di interagire con l'annuncio. Inoltre, valuta la possibilità di interrompere temporaneamente qualsiasi attività di calcolo intensivo (ad esempio un ciclo di gioco) durante la visualizzazione dell'annuncio. In questo modo, l'utente non noterà grafica lenta o non reattiva o video a scatti.
Consenti un tempo di caricamento adeguato.
È importante assicurarsi di visualizzare gli annunci interstitial al momento giusto, ma anche che l'utente non debba attendere il caricamento. Il caricamento anticipato dell'annuncio prima di mostrarlo può garantire che l'app abbia un annuncio interstitial completamente caricato e pronto quando è il momento di visualizzarlo.
Non sommergere l'utente di annunci.
Sebbene una maggiore frequenza degli annunci interstitial nell'app possa sembrare un ottimo modo per aumentare le entrate, può anche rendere scadente l'esperienza utente e ridurre le percentuali di clic. Assicurati che gli utenti non vengano interrotti così spesso da non poter più apprezzare l'utilizzo dell'app.
Non utilizzare il callback di completamento del caricamento per mostrare l'annuncio interstitial.
Questo può causare un'esperienza utente scadente. Precarica invece l'annuncio prima di doverlo mostrare. Poi controlla il metodo canPresentFromRootViewController:error: su GADInterstitialAd per scoprire se è pronto per essere mostrato.

Risorse aggiuntive

Esempi su GitHub

Visualizza gli esempi completi di annunci interstitial nella lingua che preferisci:

Video tutorial di Mobile Ads Garage

Casi di successo

Passaggi successivi