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é.
Plate-forme | Publicité interstitielle | Publicité interstitielle avec récompense | Publicité vidéo avec récompense |
---|---|---|---|
Android | ✅ | ✅ | ✅ |
iOS | ✅ | ✅ | ✅ |
Web mobile | ✅ | ✅ | ✅ |
Web sur ordinateur | ✅ | ✅ | ✅ |
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 FacebookSi 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)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.
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); });
preloadedInterstitial.showAsync() .then(function() { // Perform post-ad success operation console.log('Interstitial ad finished successfully'); }) .catch(function(e) { console.error(e.message); });
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.
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); });
preloadedRewardedInterstitial.showAsync() .then(function() { // Perform post-ad success operation console.log('Rewarded interstitial watched successfully'); }) .catch(function(e) { console.error(e.message); });
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.
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); });
preloadedRewardedVideo.showAsync() .then(function() { // Perform post-ad success operation console.log('Rewarded video watched successfully'); }) .catch(function(e) { console.error(e.message); });
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'); });
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.