Du kannst dein Spiel monetarisieren, indem du deinen Spieler*innen Werbeanzeigen zeigst. Für die Integration in Instant Games stehen derzeit zwei Formate für Audience Network-Anzeigen zur Verfügung: Rewarded Videos und Interstitial Ads. In diesem Abschnitt wirst du durch den Prozess zur Integration der Monetarisierung von Anzeigen in deinem Instant Game geleitet.
Plattform | Interstitial | Rewarded Interstitial | Rewarded Video |
---|---|---|---|
Android | ✅ | ✅ | ✅ |
iOS | ✅ | ✅ | ✅ |
Mobiles Web | ✅ | ✅ | ✅ |
Desktop-Web | ✅ | ✅ | ✅ |
Hinweis: Audience Network ist derzeit in bestimmten Regionen eingeschränkt verfügbar. Überprüfe deine Berechtigung im Onboarding-Prozess für Audience Network.
Weitere Informationen findest du im Leitfaden Audience Network: 5 Möglichkeiten zur Monetarisierung von Instant Games.
Facebook-App konfigurierenWenn du deine App bereits mit dem Monetization Manager konfiguriert und die Platzierung deiner Werbeanzeigen erstellt hast, kannst du den untenstehenden Beispielcode in Aktion sehen, indem du unsere Demo herunterlädst:
Werbeanzeigendemo herunterladen (ZIP)Eine Interstitial Ad im Vollbildmodus dient als natürlicher Übergangspunkt in deiner App. Interstitial Ads sind in Autoplay- oder in Click-to-Play-Formaten vorhanden. Die automatische Wiedergabe von Werbeanzeigen beginnt, sobald die Interstitial Ad geladen ist. Sie können standardmäßig nach 3 Sekunden übersprungen werden. Die maximale Anzeigenlaufzeit beträgt 2 Minuten.
Der nachstehende Code-Schnipsel erläutert anhand eines Beispiels, wie eine Interstitial Ad angezeigt wird.
Damit dieser Code funktioniert, musst du zunächst eine Anzeigenplatzierung mit dem Anzeigeformat Interstitial erstellen. Du solltest für jede Werbeeinheit in deiner App eine andere Platzierung verwenden.
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); });
Eine Rewarded Interstitial Ad ist eine Vollbildanzeige, die Nutzer*innen im Gegenzug für das Ansehen der Anzeige eine Belohnung bietet. Diese Anzeigen erfordern keine Zustimmung der Nutzer*innen.
Der nachstehende Code-Schnipsel erläutert anhand eines Beispiels, wie eine Rewarded Interstitial Ad angezeigt wird.
Damit dieser Code funktioniert, musst du zunächst eine Anzeigenplatzierung mit dem Anzeigenformat Rewarded Interstitial erstellen. Rewarded Interstitial Ads sind nur für Facebook Gaming-, Mobile Web- und Desktop Web-Apps verfügbar. Du solltest für jede Werbeeinheit in deiner App eine andere Platzierung verwenden.
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); });
Rewarded Video Ads sind ein Vollbilderlebnis, bei dem Nutzer*innen freiwillig eine Video Ad ansehen und dafür einen Gegenwert erhalten – etwa virtuelle Währung, Artikel in der App oder exklusiven Content.
Der nachstehende Code-Schnipsel erläutert anhand eines Beispiels, wie eine Rewarded Video Ad angezeigt wird.
Damit dieser Code funktioniert, musst du zunächst eine Anzeigenplatzierung mit dem Anzeigeformat Rewarded Video erstellen. Du solltest für jede Werbeeinheit in deiner App eine andere Platzierung verwenden.
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); });
Wenn du drei Anzeigeinstanzen desselben Typs vorab lädst, ohne sie anzuzeigen, kommt es zu einem Fehler, wenn du eine neue Anzeige erstellen möchtest. Erfolgreich geladene Anzeigen sind 60 Minuten lang gültig.
Hier ist ein Code-Beispiel, um dir zu zeigen, wie es funktioniert. Das Beispiel setzt voraus, dass alles richtig konfiguriert wurde (gültige Placement ID der anzeige etc.) und kein Netzwerkproblem vorliegt:
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'); });
Die folgenden Informationen gelten speziell für Instant Games. Weitere Informationen findest du auch in unseren Insights zum Audience Network.
Richtiges Timing für Anzeigen. Stelle sicher, dass die Werbeanzeigen in deinem Spiel das Spielerlebnis nicht stören.
Vorladen von Anzeigen. Warte nicht bis zuletzt, um zeitgleich die Werbeanzeige anzufordern, vorzuladen und anzuzeigen. Stelle stattdessen sicher, dass du mehrere AdInstances vorinstalliert hast, damit der Spieler auf dessen Forderung, sie zu sehen, nicht zu lange warten muss.
Prüfe die Unterstützung. In manchen Fällen werden Anzeigen in der Sitzung des Spielers nicht unterstützt (z. B. wenn das Spiel im Desktop-Browser gespielt wird). Überprüfe immer, ob Anzeigen unterstützt werden mit FBInstant.getSupportedAPIs()
, bevor du versuchst eine Anzeige anzufragen.
Implementiere eine schnelle Handhabe für den Fall von „Keine Ausfüllung“. Einige Bedingungen können dazu führen, dass die Werbeanzeige nicht ausgefüllt wird. In diesem Fall wird das Versprechen abgelehnt und es wird eine Nachricht mit dem Fehlercode ADS_NO_FILL
angezeigt. Achte darauf, dass dein Spiel angemessen damit umgeht, zeige eine freundliche Nachricht an und warte 30 Sekunden, bevor du eine weitere Anzeige desselben Typs anforderst.
Teste deine Anzeigen, bevor du sie einreichst. Als Entwickler*in der App kannst du Anzeigen auf Mobilgeräten anfordern und testen, ob deine Integration funktioniert, schon bevor du deine App zur Audience Network-Überprüfung einreichst.
Anzeigenimpressionen tracken. Du kannst mit selbstdefinierten Events Anzeigenimpressionen tracken, wenn showAsync
gelöst wird.
Halte nicht zu viele Anzeigeninstanzen vor. Die Methoden getRewardedVideoAsync
und getInterstitialAdAsync
geben eine AdInstance
zurück, die vorab geladen werden kann. Wenn 3 oder mehr AdInstances desselben Typs vorgeladen, aber nicht angezeigt werden, schlagen nachfolgende Versuche zur Erstellung einer neuen AdInstance fehl. Das bedeutet, dass Anrufe an getRewardedVideoAsync
und getInterstitialAdAsync
fehlschlagen und der Fehlercode ADS_TOO_MANY_INSTANCES
zurückgegeben wird, bis showAsync
aufgerufen wird oder der*die Spieler*in den Messenger neu startet.