Inserzioni in-app per Giochi istantanei

Puoi monetizzare il tuo gioco mostrando inserzioni ai tuoi giocatori. Attualmente esistono due formati di inserzioni Audience Network integrate con i giochi istantanei: video con premio e inserzioni interstitial. Questa sezione illustrerà come integrare la monetizzazione delle inserzioni con il tuo gioco istantaneo.

Disponibilità formato

PiattaformaInterstitialInterstitial con premioVideo con premio

Android

iOS

Web mobile

Web desktop

Prerequisiti

  • Hai creato almeno un posizionamento pubblicitario, nella proprietà associata al tuo gioco in Gestione della monetizzazione.
  • Puoi testare le tue build su un dispositivo mobile o su Facebook.com.

Nota: Audience Network attualmente è limitato in determinate aree geografiche. Verifica la tua idoneità nel flusso di registrazione di Audience Network.

Consulta la guida Audience Network: 5 passaggi per monetizzare i giochi istantanei per maggiori informazioni.

Configura l'app Facebook

Download di un esempio

Se hai già configurato la tua app con Gestione della monetizzazione e hai creato i tuoi posizionamenti pubblicitari, puoi vedere il codice di esempio di seguito in azione scaricando la nostra demo:

Scarica la demo sulle inserzioni (.zip)

Visualizzazione di un'inserzione interstitial

Un'inserzione interstitial è un'inserzione a schermo intero visualizzata in un punto di transizione naturale della tua app. Le inserzioni interstitial sono disponibili nei formati riproduzione automatica o click-to-play. Le inserzioni con riproduzione automatica inizieranno la riproduzione appena l'interstitial viene caricato; per impostazione predefinita, è possibile saltarle dopo 3 secondi. La durata massima dell'inserzione è di due minuti.

Lo snippet di codice seguente mostra un esempio di come visualizzare un'inserzione interstitial.

Affinché questo codice funzioni, devi prima creare un posizionamento pubblicitario con il formato di visualizzazione Interstitial. Devi usare un posizionamento diverso per ogni unità pubblicitaria nella tua app.

Precaricamento dell'inserzione

var preloadedInterstitial = null;

FBInstant.getInterstitialAdAsync(
  '123123123123_123123123123' // Your Ad Placement Id
).then(function(interstitial) {
  // Load the Ad asynchronously
  preloadedInterstitial = interstitial;
  return preloadedInterstitial.loadAsync();
}).then(function() {
  console.log('Interstitial preloaded');
}).catch(function(err){
  console.error('Interstitial failed to preload: ' + err.message);
});

Visualizzazione dell'inserzione

preloadedInterstitial.showAsync()
.then(function() {
  // Perform post-ad success operation
  console.log('Interstitial ad finished successfully');        
})
.catch(function(e) {
  console.error(e.message);
});

Visualizzazione di un'inserzione interstitial con premio

Un'inserzione interstitial con premio è un'inserzione a schermo intero che dà un incentivo all'utente in cambio della visione dell'inserzione. Queste inserzioni non richiedono il consenso esplicito degli utenti.

Lo snippet di codice seguente mostra un esempio di come visualizzare un'inserzione interstitial con premio.

Affinché questo codice funzioni, devi prima creare un posizionamento pubblicitario con il formato di visualizzazione Interstitial con premio. Le inserzioni interstitial con premio sono disponibili per le app Facebook Gaming, web mobile e web desktop. Devi usare un posizionamento diverso per ogni unità pubblicitaria nella tua app.

Precaricamento dell'inserzione

var preloadedRewardedInterstitial = null;

FBInstant.getRewardedInterstitialAsync(
  '123123123123_123123123123' // Your Ad Placement Id
).then(function(rewarded) {
  // Load the Ad asynchronously
  preloadedRewardedInterstitial = rewarded;
  return preloadedRewardedInterstitial.loadAsync();
}).then(function() {
  console.log('Rewarded interstitial preloaded');
}).catch(function(err){
  console.error('Rewarded interstitial failed to preload: ' + err.message);
});

Visualizzazione dell'inserzione

preloadedRewardedInterstitial.showAsync()
.then(function() {
  // Perform post-ad success operation
  console.log('Rewarded interstitial watched successfully');        
})
.catch(function(e) {
  console.error(e.message);
});

Visualizzazione di un'inserzione video con premio

Le inserzioni video con premio sono un'esperienza a schermo intero in cui gli utenti accettano di visualizzare un'inserzione video in cambio di qualcosa, ad esempio una valuta virtuale, articoli in-app o contenuti esclusivi.

Lo snippet di codice seguente mostra un esempio di come visualizzare un'inserzione video con premio.

Affinché questo codice funzioni, devi prima creare un posizionamento pubblicitario con il formato di visualizzazione Video con premio. Devi usare un posizionamento diverso per ogni unità pubblicitaria nella tua app.

Precaricamento dell'inserzione

var preloadedRewardedVideo = null;

FBInstant.getRewardedVideoAsync(
  '456456456456_456456456456' // Your Ad Placement Id
).then(function(rewarded) {
  // Load the Ad asynchronously
  preloadedRewardedVideo = rewarded;
  return preloadedRewardedVideo.loadAsync();
}).then(function() {
  console.log('Rewarded video preloaded');
}).catch(function(err){
  console.error('Rewarded video failed to preload: ' + err.message);
});

Visualizzazione dell'inserzione

preloadedRewardedVideo.showAsync()
.then(function() {
  // Perform post-ad success operation
  console.log('Rewarded video watched successfully');        
})
.catch(function(e) {
  console.error(e.message);
});

Il ciclo di vita delle istanze delle inserzioni

Il precaricamento di tre istanze dell'inserzione dello stesso tipo senza mostrarle causerà un errore quando proverai a creare una nuova inserzione. Una volta caricata correttamente un'inserzione, questa sarà valida per 60 minuti.

Ecco un esempio di codice per aiutarti a capire come funziona, supponendo che tutto sia configurato correttamente (ID di posizionamento pubblicitario validi ecc.) e non ci siano problemi di rete:

var preloadedInterstitial1 = null;
var preloadedInterstitial2 = null;
var preloadedInterstitial3 = null;
var preloadedRewardedVideo = null;

// PRELOAD PHASE
FBInstant.getInterstitialAdAsync(
  '123123123123_123123123123'
).then(function(interstitial) {
  // This should get called, meaning you now have 1 ad instance.
  preloadedInterstitial1 = interstitial;
  return preloadedInterstitial1.loadAsync();
}).then(function() {
  // This should get called unless we do not have ads to serve.
  console.log('Interstitial 1 preloaded')
}).catch(function(err){
  // This would be called only if we do not have ads to serve.
  // The error would then be ADS_NO_FILL.
  // You can try to reload the ad after some time (ideally over 30 seconds).
  // If you get ADS_NO_FILL 3 times in a row, the instance will be disabled.
  console.error('Interstitial 1 failed to preload: ' + err.message);
  // You can try to reload after 30 seconds (2nd attempt)
  setTimeout(function () { handleAdsNoFill(preloadedInterstitial1, 2); }, 30 * 1000);
});

// Here is how the function to handle ADS_NO_FILL would look like
function handleAdsNoFill (adInstance, attemptNumber) {
  if (attemptNumber > 3) {
    // You can assume we will not have to serve in the current session, no need to try
    // to load another ad.
    return;
  } else {
    adInstance.loadAsync().then(function() {
      // This should get called if we finally have ads to serve.
      console.log('Interstitial preloaded')
    }).catch(function(err){
      console.error('Interstitial failed to preload: ' + err.message);
      // You can try to reload after 30 seconds
      setTimeout(function () {
        handleAdsNoFill(adInstance, attemptNumber+1);
      }, 30 * 1000);
    });
  }
}

// As we covered ADS_NO_FILL, from now on let's assume we have ads to serve.
FBInstant.getInterstitialAdAsync(
  // You can re-use the same Ad Placement Id as long as it is of the valid type:
  // interstitial or rewarded video (here, it has to be interstitial)
  '123123123123_123123123123'
).then(function(interstitial) {
  // This should get called, meaning you now have 2 ad instances.
  preloadedInterstitial2 = interstitial;
  return preloadedInterstitial2.loadAsync();
}).then(function() {
  console.log('Interstitial 2 preloaded')
});

FBInstant.getRewardedVideoAsync(
  '456456456456_456456456456'
).then(function(rewarded) {
  // This should get called, meaning you now have 3 ad instances.
  preloadedRewardedVideo = rewarded;
  return preloadedRewardedVideo.loadAsync();
}).then(function() {
  console.log('Rewarded video preloaded')
});

FBInstant.getInterstitialAdAsync(
  '123123123123_123123123123'
).catch(function(err){
  // This should be called now because you already have 3 ad instances.
  // The error would then be ADS_TOO_MANY_INSTANCES.
  console.error('Interstitial 3 failed to preload: ' + err.message);
});

// SHOWING ADS (at a timing that makes sense in the workflow of your game)
preloadedInterstitial1.showAsync()
.then(function() {
  // This should get called, meaning you now have 2 ad instances.
  console.log('Interstitial ad 1 finished successfully');        
});

// A bit later, assuming you did not preload a new instance yet.
preloadedInterstitial2.showAsync()
.then(function() {
  // This should get called, meaning you now have 1 ad instance.
  console.log('Interstitial ad finished successfully');        
});

// A bit later, assuming you did not preload a new instance yet.
preloadedRewardedVideo.showAsync()
.then(function() {
  // This should get called, meaning you now have no ad instance.
  console.log('Rewarded video watched successfully');        
});

Best practice e risoluzione dei problemi

Le informazioni seguenti sono specifiche per Giochi istantanei. Consulta anche Insight di Audience Network.

Definisci correttamente le tempistiche delle inserzioni. Assicurati che le inserzioni nel tuo gioco non interrompano l'esperienza del giocatore.

Precarica le inserzioni. Non aspettare l'ultimo minuto per richiedere, precaricare e mostrare l'inserzione contemporaneamente. Assicurati invece di avere alcune AdInstances precaricate, in modo che quando il giocatore richiede di vedere l'inserzione, non deve aspettare troppo.

Verifica il supporto. In alcuni casi, la sessione del giocatore non supporterà le inserzioni (ad esempio, se sta giocando sul browser desktop). Devi sempre verificare che le inserzioni siano supportate con FBInstant.getSupportedAPIs() prima di provare a richiedere un'inserzione.

Implementa una gestione intelligente dei "mancati riempimenti". Alcune condizioni potrebbero determinare la mancata visualizzazione dell'inserzione. In questo caso, la richiesta verrà respinta e verrà visualizzato il messaggio di errore ADS_NO_FILL. Assicurati che il tuo gioco gestisca questa cosa in modo intelligente, mostra un messaggio amichevole e aspetta 30 secondi prima di richiedere un'altra inserzione dello stesso tipo.

Testa le inserzioni prima di inviarle. In qualità di sviluppatore dell'app, puoi richiedere inserzioni sui dispositivi mobili e verificare che la tua integrazione funzioni anche prima di inviare la tua app per l'analisi di Audience Network.

Monitora le impression delle inserzioni. Puoi utilizzare eventi personalizzati per monitorare le impression delle inserzioni quando viene risolto showAsync.

Non precaricare troppe AdInstances senza mostrarle. Entrambi i metodi getRewardedVideoAsync e getInterstitialAdAsync restituiscono una AdInstance che può essere precaricata. Il precaricamento di 3 o più AdInstance dello stesso tipo senza mostrarle causerà il fallimento dei successivi tentativi di creazione di una nuova AdInstance. Questo significa che le chiamate a getRewardedVideoAsync e getInterstitialAdAsync non avranno esito positivo e restituiranno il codice di errore ADS_TOO_MANY_INSTANCES finché non viene chiamato showAsync o il giocatore riavvia Messenger.