Publicités dans l’application pour les Jeux instantanés

Vous pouvez monétiser votre jeu en proposant des publicités à vos joueurs. Il existe actuellement deux formats de publicités Audience Network intégrées aux Jeux instantanés : les vidéos avec récompense et les publicités interstitielles. Cette section vous guide dans le processus d’intégration de la monétisation publicitaire dans votre Jeu instantané.

Format disponible

Plate-formePublicité interstitiellePublicité interstitielle avec récompensePublicité vidéo avec récompense

Android

iOS

Web mobile

Web sur ordinateur

Conditions requises

  • Vous avez créé au moins un placement publicitaire, dans la propriété associée à votre jeu dans le Gestionnaire de monétisation.
  • Vous pouvez tester vos créations sur un appareil mobile or sur Facebook.com.

Remarque : Actuellement, seules certaines régions bénéficient d’Audience Network. Vérifiez votre éligibilité au flux d’intégration d’Audience Network.

Pour en savoir plus, consultez les cinq étapes de monétisation des Jeux instantanés dans Audience Network.

Configurer une application Facebook

Téléchargement d’un exemple

Si vous avez déjà configuré votre application avec le Gestionnaire de monétisation et que vous avez créé vos placements publicitaires, vous pouvez voir l’exemple de code ci-dessous en action en téléchargeant notre démo :

Télécharger la démo publicitaire (.zip)

Affichage d’une publicité interstitielle

Une publicité interstitielle est une publicité plein écran qui s’affiche lors d’une transition naturelle au sein de votre application. Les vidéos interstitielles peuvent être lues automatiquement et manuellement après un clic. Les publicités en lecture automatique commenceront à être diffusées dès que la publicité interstitielle se chargera ; elles peuvent être ignorées après trois secondes par défaut. La durée maximale d’une publicité est de deux minutes.

L’extrait de code ci-dessous illustre comment afficher une publicité interstitielle.

Pour que ce code fonctionne, vous devez d’abord créer un placement publicitaire au format d’affichage Interstitiel. Il est préférable d’utiliser un placement différent pour chaque unité publicitaire dans votre application.

Préchargement de la publicité

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);
});

Affichage de la publicité

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

Affichage d’une publicité interstitielle avec récompense

Une publicité interstitielle avec récompense est une publicité en plein écran qui offre un avantage à l’utilisateur ou l’utilisatrice après visionnage de la publicité. Ces publicités ne nécessitent pas l’autorisation des utilisateur·ices.

L’extrait de code ci-dessous illustre comment afficher une publicité interstitielle avec récompense.

Pour que ce code fonctionne, vous devez d’abord créer un placement publicitaire au format d’affichage Interstitiel avec récompense. Les publicités interstitielles avec récompense sont disponibles dans les applications Facebook Gaming et les applications Web mobiles et de bureau. Il est préférable d’utiliser un placement différent pour chaque unité publicitaire dans votre application.

Préchargement de la publicité

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);
});

Affichage de la publicité

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

Affichage d’une publicité vidéo avec récompense

Les publicités vidéo avec récompense sont des vidéos en plein écran que les utilisateurs choisissent de regarder en échange de quelque chose de valeur, comme une monnaie virtuelle, un objet intégré ou un contenu exclusif.

L’extrait de code ci-dessous illustre comment afficher une publicité vidéo avec récompense.

Pour que ce code fonctionne, vous devez d’abord créer un placement publicitaire au format d’affichage Vidéo avec récompense. Il est préférable d’utiliser un placement différent pour chaque unité publicitaire dans votre application.

Préchargement de la publicité

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);
});

Affichage de la publicité

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

Cycle de développement des instances publicitaires

Précharger trois instances publicitaires de même type sans les afficher provoque l’échec de la création d’une nouvelle publicité. Quand une publicité est chargée, elle reste valide pendant 60 minutes.

Voici un exemple de code pour vous aider à comprendre le fonctionnement, en supposant que tout est configuré correctement (ID de placement publicitaire valides, etc.) et que le réseau ne présente aucun problème :

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');        
});

Recommandations et résolution des erreurs

Les informations ci-dessous sont spécifiques aux Jeux instantanés. Vous pouvez également consulter nos insights sur Audience Network.

Planifier correctement les publicités : assurez-vous que les publicités de votre jeu ne perturbent pas l’expérience du joueur.

Précharger les publicités : n’attendez pas la dernière minute pour envoyer la requête, précharger et afficher la publicité en même temps. Assurez-vous plutôt d’avoir préchargé certaines instances publicitaires de sorte que, lorsque le joueur demande à voir une publicité, il n’ait pas à attendre trop longtemps.

Vérifier la compatibilité : dans certains cas, la session du joueur ne prend pas en charge les publicités (par exemple, si elles sont visionnées dans le navigateur d’un ordinateur). Vous devez toujours utiliser FBInstant.getSupportedAPIs() pour vérifier si les publicités sont prises en charge avant d’essayer d’envoyer une requête publicitaire.

Implémenter une gestion adaptée des publicités vides : dans certains cas, il arrive que la publicité ne se charge pas. La promesse est alors refusée et le message d’erreur ADS_NO_FILL s’affiche. Assurez-vous que votre jeu gère ce point correctement, affiche un message amical et patiente 30 secondes avant de demander une autre publicité du même type.

Tester vos publicités avant de les envoyer : en tant que responsable du développement de l’application, vous pouvez demander des publicités sur mobile et voir si votre intégration fonctionne, avant même de soumettre votre application pour certification Audience Network.

Suivre les impressions publicitaires : vous pouvez utiliser les évènements personnalisés pour suivre les impressions publicitaires lorsque showAsync est résolu.

Ne pas retenir trop d’instances publicitaires : les deux méthodes (getRewardedVideoAsync ou getInterstitialAdAsync) renvoient une valeur AdInstance qui peut être préchargée. Précharger trois instances publicitaires ou plus de même type sans les afficher provoque l’échec des tentatives ultérieures de création d’une nouvelle instance publicitaire. Cela signifie que les appels vers getRewardedVideoAsync et getInterstitialAdAsync échoueront avec le code d’erreur ADS_TOO_MANY_INSTANCES jusqu’à ce que showAsync soit appelé ou que le joueur redémarre Messenger.