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 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 di toccare l'annuncio e proseguire verso la sua destinazione o di 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 test 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 prova dedicato per gli interstitial per iOS:
ca-app-pub-3940256099942544/4411468910

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

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

Implementazione

I passaggi principali per integrare gli annunci interstitial sono:

  1. Carica un annuncio.
  2. Registrati per ricevere 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 di completamento. L'esempio seguente mostra come caricare un elemento GADInterstitialAd nel tuo 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 per gli 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 pubblicato 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 mostrato di nuovo. Una best practice prevede il caricamento di un altro annuncio interstitial nel metodo adDidDismissFullScreenContent: su GADFullScreenContentDelegate, in modo che il caricamento dell'annuncio interstitial successivo inizi non appena viene ignorato quello precedente.

Visualizza l'annuncio

Gli interstitial devono essere visualizzati durante le pause naturali nel flusso di un'app. Tra i livelli 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 un gioco, crea un punto di vista del genere. 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 pubblicherai annunci interstitial e come è probabile che l'utente risponda.
Ricorda di mettere in pausa l'azione quando mostri un annuncio interstitial.
Esistono vari tipi di annunci interstitial: di testo, illustrati, video e altro ancora. È importante assicurarsi che quando l'app visualizza un annuncio interstitial, sospende anche l'utilizzo 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 eventi adDidDismissFullScreenContent:, che verrà richiamato quando l'utente ha finito 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à grafica lenta o non risponde o video con interruzioni.
Attendere un tempo di caricamento adeguato.
Così è importante assicurarsi che gli annunci interstitial vengano visualizzati al momento giusto, così è importante anche che l'utente non debba attendere il loro caricamento. Caricare l'annuncio in anticipo prima che intendi pubblicarlo per assicurarti 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.
Anche se l'aumento della frequenza degli annunci interstitial nella tua app può sembrare un ottimo modo per aumentare le entrate, può anche ridurre l'esperienza utente e le percentuali di clic. Assicurati che gli utenti non vengano interrotti così spesso da non essere più in grado di utilizzare la tua app.
Non utilizzare il callback di completamento del caricamento per mostrare l'interstitial.
Ciò può compromettere l'esperienza utente. Piuttosto, precarica 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