Annunci interstitial

Gli interstitial sono annunci a schermo intero che coprono l'interfaccia di un'app fino a quando chiuso dall'utente. In genere, vengono visualizzati in punti di transizione naturali il flusso di un'app, ad esempio tra un'attività e l'altra o durante la pausa livelli in un gioco. Quando un'app mostra un annuncio interstitial, l'utente può scegliere toccare l'annuncio e continuare fino alla destinazione oppure chiuderlo e tornare all'app. Case study.

Questa guida mostra come integrare gli annunci in interrompimento in un'app per iOS.

Prerequisiti

Effettua sempre test con annunci di prova

Durante la creazione e il test delle tue app, assicurati di utilizzare annunci di prova anziché annunci di produzione attivi. In caso contrario, il tuo account potrebbe essere sospeso.

Il modo più semplice per caricare annunci di prova è utilizzare il nostro ID unità pubblicitaria di prova dedicato per gli interstitial su iOS:
/21775744923/example/interstitial

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

Per ulteriori informazioni sul funzionamento degli 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 le richiamate.
  3. Mostrare l'annuncio e gestire l'evento premio.

Carica un annuncio

Il caricamento di un annuncio viene eseguito utilizzando load(adUnitID:request) nella GAMInterstitialAd corso.

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var interstitial: GAMInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()

    Task {
      do {
        interstitial = try await GAMInterstitialAd.load(
          withAdUnitID: "/21775744923/example/interstitial", request: GAMRequest())
      } catch {
        print("Failed to load interstitial ad with error: \(error.localizedDescription)")
      }
    }
  }
}

SwiftUI

import GoogleMobileAds

class InterstitialViewModel: NSObject, GADFullScreenContentDelegate {
  private var interstitialAd: GADInterstitialAd?

  func loadAd() async {
    do {
      interstitialAd = try await GADInterstitialAd.load(
        withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
      interstitialAd?.fullScreenContentDelegate = self
    } catch {
      print("Failed to load interstitial ad with error: \(error.localizedDescription)")
    }
  }

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GAMInterstitialAd *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GAMRequest *request = [GAMRequest request];
  [GAMInterstitialAd loadWithAdManagerAdUnitID:@"/21775744923/example/interstitial"
      request:request
      completionHandler:^(GAMInterstitialAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
      return;
    }
    self.interstitial = ad;
  }];
}

Registrati per le richiamate

Per ricevere notifiche per gli eventi di presentazione, devi implementare il protocollo GADFullScreenContentDelegate e assegnarlo al Proprietà fullScreenContentDelegate dell'annuncio restituito. La Il protocollo GADFullScreenContentDelegate gestisce i callback quando l'annuncio presenta correttamente o meno e quando viene ignorato. Le seguenti mostra come implementare il protocollo e assegnarlo all'annuncio:

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var interstitial: GAMInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()

    Task {
      do {
        interstitial = try await GAMInterstitialAd.load(
          withAdUnitID: "/21775744923/example/interstitial", request: GAMRequest())
        interstitial?.fullScreenContentDelegate = self
      } catch {
        print("Failed to load interstitial ad with error: \(error.localizedDescription)")
      }
    }
  }

  /// 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.")
  }
}

SwiftUI

Assegna la proprietà fullScreenContentDelegate all'annuncio restituito:

interstitialAd?.fullScreenContentDelegate = self

Implementa il protocollo:

func adDidRecordImpression(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidRecordClick(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
}

func ad(
  _ ad: GADFullScreenPresentingAd,
  didFailToPresentFullScreenContentWithError error: Error
) {
  print("\(#function) called")
}

func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
}

func adWillDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
  // Clear the interstitial ad.
  interstitialAd = nil
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController () <GADFullScreenContentDelegate>

@property(nonatomic, strong) GAMInterstitialAd *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GAMRequest *request = [GAMRequest request];
  [GAMInterstitialAd loadWithAdManagerAdUnitID:@"/21775744923/example/interstitial"
      request: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;
  }];
}

/// 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.");
}

GAMInterstitialAd è un oggetto monouso. Questo indica che un annuncio interstitial visualizzato non può essere mostrato di nuovo. Una migliore è caricare un altro annuncio interstitial nella Metodo adDidDismissFullScreenContent: su GADFullScreenContentDelegate quindi l'annuncio interstitial successivo inizia a caricarsi non appena quello precedente viene ignorata.

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à.

Swift

guard let interstitial = interstitial else {
  return print("Ad wasn't ready.")
}

// The UIViewController parameter is an optional.
interstitial.present(fromRootViewController: nil)

SwiftUI

Monitora gli eventi dell'interfaccia utente nella vista 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(fromRootViewController: nil)
}

Objective-C

if (self.interstitial) {
  // The UIViewController parameter is nullable.
  [self.interstitial presentFromRootViewController:nil];
} 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 al meglio nelle app con punti di transizione naturali. La conclusione di un'attività all'interno di un'app, ad esempio 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 nella è facile presentare un annuncio interstitial senza interrompere la un'esperienza senza intervento manuale. Assicurati di considerare in quali punti del flusso di lavoro della tua app gli annunci interstitial display e la probabilità che l'utente risponda.
Ricorda di mettere in pausa l'azione quando visualizzi un annuncio interstitial.
Esistono vari tipi di annunci interstitial: di testo, illustrati, video e altro ancora. È importante assicurarsi che quando nell'app sia visualizzata un annuncio interstitial, sospende anche l'utilizzo di alcune risorse per consentire sfruttarle. 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 nelle adDidDismissFullScreenContent: , che verrà richiamato al termine dell'interazione dell'utente. con l'annuncio. Inoltre, valuta la possibilità di interrompere temporaneamente i calcoli intensivi attività (come un ciclo di gioco) durante la visualizzazione dell'annuncio. Questo assicura che l'utente non riscontri grafici lenti o che non rispondono, né stuttering video.
Attendi un tempo di caricamento adeguato.
Così come è importante assicurarsi di mostrare gli annunci interstitial a un al momento giusto, è inoltre importante assicurarsi che l'utente non debba e attenderemo il loro caricamento. Caricare l'annuncio in anticipo prima della data in cui vuoi pubblicarlo puoi assicurarti che nell'app sia disponibile un annuncio interstitial completamente caricato arriva il momento di mostrarne uno.
Non inondare l'utente di annunci.
L'aumento della frequenza degli annunci interstitial nella tua app può sembrare come un ottimo modo per aumentare le entrate, può anche peggiorare l'esperienza utente e percentuali di clic più basse. Assicurati che gli utenti non siano così di frequente interrotti in modo che non possano più utilizzare la tua app.
Non utilizzare il callback di completamento del caricamento per mostrare l'interstitial.
Questo può causare una scarsa esperienza utente. ma precarica l'annuncio prima di devi mostrarlo. Quindi controlla il metodo canPresentFromRootViewController:error: il giorno GAMInterstitialAd per scoprire se è pronto come mostrato nell'immagine.

Esempi su GitHub

Visualizza esempi completi di annunci interstitial nella tua lingua preferita:

Passaggi successivi