Annunci interstitial

Gli annunci interstitial sono annunci a schermo intero che coprono l'interfaccia di un'app fino alla chiusura dell'utente. In genere vengono visualizzati in corrispondenza di punti di transizione naturali nel flusso di un'app, ad esempio tra un'attività e l'altra 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 proseguire verso la sua destinazione oppure chiuderlo e tornare all'app. Case study.

Questa guida illustra come integrare gli annunci interstitial in un'app per iOS.

Prerequisiti

Esegui sempre test con annunci di prova

Quando crei e testi le tue app, assicurati di utilizzare annunci di prova anziché annunci di produzione pubblicati. In caso contrario, l'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 interstitial iOS:
ca-app-pub-3940256099942544/4411468910

È stato appositamente configurato per restituire annunci di prova per ogni richiesta e puoi usarlo nelle tue app durante la programmazione, i test e il debug. Assicurati di sostituirlo con il tuo ID unità pubblicitaria personale prima di pubblicare l'app.

Per ulteriori informazioni su come funzionano gli annunci di prova dell'SDK Mobile Ads, consulta la sezione Annunci di prova.

Implementazione

I passaggi principali per integrare gli annunci interstitial sono:

  1. Carica un annuncio.
  2. Registrati per le richiamate.
  3. Visualizza l'annuncio e gestisci l'evento premio.

Carica un annuncio

Il caricamento di un annuncio viene eseguito utilizzando il metodo loadWithAdUnitID:request:completionHandler: statico nella classe GADInterstitialAd. Il metodo di caricamento richiede l'ID unità pubblicitaria, un oggetto GADRequest e un gestore di completamento che viene chiamato quando il caricamento dell'annuncio ha esito positivo o negativo. L'oggetto GADInterstitialAd caricato viene fornito come parametro nel gestore del completamento. L'esempio seguente mostra come caricare un elemento GADInterstitialAd nel corso ViewController.

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var interstitial: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()
    let request = GADRequest()
    GADInterstitialAd.load(withAdUnitID: "ca-app-pub-3940256099942544/4411468910",
                                request: request,
                      completionHandler: { [self] ad, error in
                        if let error = error {
                          print("Failed to load interstitial ad with error: \(error.localizedDescription)")
                          return
                        }
                        interstitial = ad
                      }
    )
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GADInterstitialAd *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GADRequest *request = [GADRequest request];
  [GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
                              request:request
                    completionHandler:^(GADInterstitialAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
      return;
    }
    self.interstitial = ad;
  }];
}

Registrati per i callback

Per ricevere notifiche relative agli eventi di presentazione, devi implementare il protocollo GADFullScreenContentDelegate e assegnarlo alla proprietà fullScreenContentDelegate dell'annuncio restituito. 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 e assegnarlo all'annuncio:

Swift

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var interstitial: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()
    let request = GADRequest()
    GADInterstitialAd.load(withAdUnitID: "ca-app-pub-3940256099942544/4411468910",
                                request: request,
                      completionHandler: { [self] ad, error in
                        if let error = error {
                          print("Failed to load interstitial ad with error: \(error.localizedDescription)")
                          return
                        }
                        interstitial = ad
                        interstitial?.fullScreenContentDelegate = self
                      }
    )
  }

  /// Tells the delegate that the ad failed to present full screen content.
  func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
    print("Ad did fail to present full screen content.")
  }

  /// Tells the delegate that the ad will present full screen content.
  func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad will present full screen content.")
  }

  /// Tells the delegate that the ad dismissed full screen content.
  func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad did dismiss full screen content.")
  }
}

Objective-C

@interface ViewController ()<GADFullScreenContentDelegate>

@property(nonatomic, strong) GADInterstitialAd *interstitial;

@end

@implementation ViewController
- (void)viewDidLoad {
  [super viewDidLoad];
  GADRequest *request = [GADRequest request];
  [GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
                              request: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;
  }];
}

/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
    NSLog(@"Ad did fail to present full screen content.");
}

/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
    NSLog(@"Ad will present full screen content.");
}

/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
   NSLog(@"Ad did dismiss full screen content.");
}

GADInterstitialAd è un oggetto monouso. Ciò significa che, una volta mostrato, un annuncio interstitial non può essere più mostrato. Una best practice consiste nel caricare un altro annuncio interstitial nel metodo adDidDismissFullScreenContent: su GADFullScreenContentDelegate, in modo che il caricamento dell'annuncio interstitial successivo abbia inizio non appena viene ignorato quello precedente.

Visualizza l'annuncio

Gli interstitial devono essere visualizzati durante le pause naturali nel flusso di un'app. Tra un livello e l'altro di un gioco è un buon esempio o dopo che l'utente ha completato un'attività. Ecco un esempio di come eseguire questa operazione in uno dei metodi di azione in UIViewController:

Swift

@IBAction func doSomething(_ sender: Any) {
  if interstitial != nil {
    interstitial.present(fromRootViewController: self)
  } else {
    print("Ad wasn't ready")
  }
}

Objective-C

- (IBAction)doSomething:(id)sender {
  ...
  if (self.interstitial) {
    [self.interstitial presentFromRootViewController:self];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

best practice

Valuta se gli annunci interstitial sono il tipo giusto di annuncio 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 gioco, crea un punto di questo tipo. Poiché l'utente si aspetta un'interruzione 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 annunci interstitial e le probabilità 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 la tua app visualizza un annuncio interstitial, sospendi anche l'uso di alcune risorse per consentire all'annuncio di usufruirne. Ad esempio, quando effettui la chiamata per visualizzare un annuncio interstitial, assicurati di mettere in pausa l'output audio prodotto dalla tua app. Puoi riprendere la riproduzione dei suoni nel gestore di eventi adDidDismissFullScreenContent:, che viene richiamato quando l'utente ha terminato di interagire con l'annuncio. Inoltre, valuta la possibilità di interrompere temporaneamente eventuali attività di calcolo intense (ad esempio un ciclo di gioco) durante la visualizzazione dell'annuncio. In questo modo l'utente non rileverà una grafica lenta o non reattiva o video con interruzioni.
Lascia un tempo di caricamento adeguato.
Così è importante assicurarsi che gli annunci interstitial vengano pubblicati al momento appropriato, è altrettanto importante assicurarsi che l'utente non debba attenderne il caricamento. Caricare l'annuncio in anticipo prima che tu voglia pubblicarlo garantisce che la tua app abbia un annuncio interstitial completamente caricato e pronto quando arriva il momento di mostrarne uno.
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 subiscano interruzioni talmente frequenti da non riuscire più a utilizzare la tua app.
Non utilizzare il callback di completamento del caricamento per mostrare l'interstitial.
Ciò può compromettere l'esperienza utente. Puoi invece precaricare l'annuncio prima di doverlo mostrare. Quindi controlla il metodo canPresentFromRootViewController:error: su GADInterstitialAd per scoprire se è pronto per essere mostrato.

Risorse aggiuntive

Esempi su GitHub

Tutorial video di Mobile Ads Garage

Casi di successo

Passaggi successivi