Annunci interstitial

Gli annunci interstitial sono annunci a schermo intero che coprono l'interfaccia di un'app fino alla chiusura dall'utente. In genere sono mostrati nei punti di transizione naturali nel flusso di un'app, ad esempio tra le attività o durante la pausa tra i livelli di un gioco. Quando un'app mostra un annuncio interstitial, l'utente ha la possibilità di toccare l'annuncio e continuare con la destinazione oppure di chiuderla e tornare all'app. Case study.

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

Prerequisiti

Esegui sempre il test con gli annunci di prova

Quando crei e testi le tue app, assicurati di utilizzare gli annunci di prova anziché gli annunci di produzione. 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 per iOS:
ca-app-pub-3940256099942544/4411468910

È stato appositamente configurato per restituire annunci di test per ogni richiesta e può essere utilizzato nelle tue app durante la programmazione, 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

Ecco i passaggi principali per l'integrazione degli annunci interstitial:

  1. Caricare un annuncio.
  2. Registrati per richiamare.
  3. Mostrare l'annuncio e gestire l'evento relativo ai premi.

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 dell'unità pubblicitaria, un oggetto GADRequest e un gestore del 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 nella classe 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 quando l'annuncio viene presentato correttamente o meno e quando viene ignorato. Il codice riportato di seguito 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 utilizzabile una sola volta. Ciò significa che, una volta mostrato un annuncio interstitial, non può essere mostrato di nuovo. Una best practice è caricare un altro annuncio interstitial nel adDidDismissFullScreenContent:metodo GADFullScreenContentDelegatein modo che il successivo annuncio interstitial inizi a essere caricato non appena viene ignorato.

Visualizza l'annuncio

Gli interstitial devono essere visualizzati durante le pause naturali del flusso di un'app. Tra i livelli di un gioco è un buon esempio o dopo che l'utente completa 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 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 gioco, crea un punto simile. Poiché l'utente si aspetta un'interruzione dell'azione, è facile presentare un annuncio interstitial senza interrompere la sua esperienza. Assicurati di considerare i punti del flusso di lavoro della tua app in cui devi mostrare gli annunci interstitial e la 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 altri. È importante assicurarsi che quando la propria app visualizza un annuncio interstitial, sospende anche l'utilizzo di alcune risorse per consentirne l'utilizzo. 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 verrà richiamato quando l'utente avrà completato l'interazione con l'annuncio. Inoltre, prendi in considerazione l'interruzione temporanea di attività di calcolo intense (ad esempio, un ciclo di gioco) durante la visualizzazione dell'annuncio. In questo modo, l'utente non riscontrerà immagini reiterate o lente o video non regolari.
I tempi di caricamento sono corretti.
Così come è importante assicurarsi di mostrare gli annunci interstitial nel momento appropriato, è altrettanto importante assicurarsi che l'utente non debba attendere il caricamento. Caricare l'annuncio in anticipo prima della pubblicazione, puoi assicurarti che il tuo annuncio interstitial nella tua app sia pronto quando arriva il momento di mostrarne uno.
Non inondare l'utente degli annunci.
L'aumento della frequenza degli annunci interstitial nella tua app potrebbe sembrare un ottimo modo per incrementare le entrate, ma può anche ridurre l'esperienza utente e ridurre le percentuali di clic. Assicurati che gli utenti non vengano interrotti così spesso che non possano più usare la tua app.
Non usare il callback di completamento del caricamento per mostrare l'annuncio interstitial.
Ciò può compromettere l'esperienza utente. Precarica l'annuncio prima di mostrarlo. Poi controllate il metodo canPresentFromRootViewController:error: su GADInterstitialAd per sapere se è pronto per essere mostrato.

Risorse aggiuntive

Esempi su GitHub

Tutorial video di Mobile Ads Garage

Casi di successo

Passaggi successivi