App-interne Anzeigen für Instant Games

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.

Formatverfügbarkeit

PlattformInterstitialRewarded InterstitialRewarded Video

Android

iOS

Mobiles Web

Desktop-Web

Voraussetzungen

  • Du hast mindestens eine Anzeigenplatzierung mit der Eigenschaft erstellt, die im Monetization Manager mit deinem Spiel verknüpft ist.
  • Du kannst deine Builds auf einem Mobilgerät oder auf Facebook.com testen.

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 konfigurieren

Beispiel herunterladen

Wenn 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 anzeigen

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.

Vorabladen der Werbeanzeige

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

Anzeigen der Werbeanzeige

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

Rewarded Interstitial Ad anzeigen

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.

Vorabladen der Werbeanzeige

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

Anzeigen der Werbeanzeige

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

Anzeigen einer Video Ads mit Belohnung

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.

Vorabladen der Werbeanzeige

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

Anzeige der Werbeanzeige

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

Der Lebenszyklus von Werbeanzeige-Instanzen

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

Best Practices und Fehlerbehebung

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.