Anzeigen-Placements

In diesem Leitfaden erfahren Sie, wie Sie mit der Funktion „Anzeigen-Placements“ des Unity-Plug-ins für Google Mobile Ads Anzeigen für Ihre App erstellen und ausliefern lassen.

Voraussetzungen

Google Mobile Ads SDK initialisieren

Initialisieren Sie das Mobile Ads SDK, bevor Sie Anzeigen laden. Rufen Sie dazu MobileAds.Initialize() mit einem Action<InitializationStatus>-Callback auf. Dies muss nur einmal erfolgen, idealerweise beim Start der App.

using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    ...
    public void Start()
    {
        // Initialize the Mobile Ads SDK.
        MobileAds.Initialize((initStatus) =>
        {
            // SDK initialization is complete
        });
        ...
    }
}

Anzeigen-Placements erstellen

Damit ein Banner in Google Mobile Anzeigen erscheinen kann, müssen Sie zuerst ein Anzeigen-Placement erstellen und konfigurieren. Im Unity-Editor können Sie unter Assets > Google Mobile Ads > Anzeigen-Placements ein Banner-, Interstitial- oder Anzeigen-Placement auswählen. Nun werden drei Demo-Anzeigen-Placements eingerichtet und sind einsatzbereit.

Wenn Sie ein neues Anzeigen-Placement hinzufügen möchten, klicken Sie am Ende der Liste auf die Schaltfläche Neues Placement hinzufügen. Sie können das Anzeigen-Placement in der Ansicht „Inspector“ konfigurieren.

Konfiguration des Anzeigen-Placements

Jedes Placement hat folgende Eigenschaften:

Placement-Name
Name des Placements Wird verwendet, um beim Einrichten von Anzeigen in einer Szene Placements zu identifizieren.
Anzeigenformat
Banner, mit Prämie, Interstitial Der Typ der Anzeige.
Anzeigenblock-ID
Geben Sie die Banneranzeigenblock-ID für Android und iOS an. Sie müssen mindestens eine Anzeigenblock-ID angeben.
Szenenübergreifend persistent
Wenn diese Option aktiviert ist, bleibt das Banner unabhängig von Szenenwechseln auf dem Bildschirm zu sehen (gleiches Verhalten wie bei DontDestroyOnLoad).
Automatisches Laden aktiviert
Wenn diese Option aktiviert ist, wird eine Anzeige automatisch geladen, sobald eine mit dem Anzeigen-Placement verknüpfte Szene geladen wird.

Der folgende Screenshot zeigt ein Beispiel für ein Anzeigen-Placement mit dem Namen My Awesome Banner.

AdGameObject zur Szene hinzufügen

Sie können Ihrer Szenen ein AdGameObject für Banner-, Interstitial- oder Anzeigen mit Prämie hinzufügen. Rufen Sie dazu im Unity-Editor GameObject > Google Mobile Ads auf. Wählen Sie das Format aus, um der aktiven Szene ein Placement hinzuzufügen.

Nachdem Sie der Szene ein AdGameObject hinzugefügt haben, sehen Sie in der Hierarchieansicht des Unity-Editors ein GameObject, das die Anzeige darstellt.

Sie können den Namen der Platzierung ändern, indem Sie den Namen des GameObjects selbst ändern. Der folgende Screenshot zeigt ein Beispiel für ein AdGameObject namens Banner Ad.

AdGameObject-Einstellungen

Sie können das AdGameObject in Ihrer Szene über die Inspector-Ansicht in den Einstellungen der Komponente Ad Game Object (Script) konfigurieren.

Anzeigen-Placement

Wählen Sie in der Drop-down-Liste der konfigurierten Placements das Anzeigen-Placement aus. Die Liste enthält dann nur Anzeigenblöcke für das richtige Format. Bei Spielobjekten für Banneranzeigen werden im Drop-down-Menü beispielsweise nur konfigurierte Banneranzeigen-Placements angezeigt.

BannerAdGameObject-Konfiguration (nur Banner)

  • Größe: Wählen Sie die Größe für das Banner aus, das Sie verwenden möchten.
    • Verankertes adaptives Banner bietet einige weitere Optionen:
      • Ausrichtung: Wählen Sie die Geräteausrichtung aus, die zur Berechnung der Anzeigenhöhe verwendet wird.
      • Gesamte Bildschirmbreite verwenden: Wenn diese Option aktiviert ist, nimmt das Banner die gesamte Bildschirmbreite ein. Sie können die prozentuale Breite des Bildschirms (50–99 %) anpassen, wenn Sie die Option Gesamte Bildschirmbreite verwenden deaktivieren.
    • Bei der Option Benutzerdefiniert können Sie Breite und Höhe des Banners festlegen.
  • Anzeigenposition: Wählen Sie die Position aus, an der das Banner platziert werden soll.

Callbacks

Sie können Funktionen implementieren, die Anzeigen-Callbacks entsprechen. Wenn beispielsweise eine Banneranzeige nicht geladen werden kann, gehen Sie so vor:

  1. Erstellen Sie eine Funktion, die mit dem Anzeigen-Callback kompatibel ist.

    public void OnBannerAdFailedToLoad(string reason) {
        Debug.Log("Banner ad failed to load: " + reason);
    }
    
  2. Hängen Sie das Skript, das die obige Funktion enthält, an ein beliebiges GameObject in der Szene an.

  3. Klicken Sie auf die Schaltfläche + und ziehen Sie das GameObject, dem Sie das Skript hinzugefügt haben, per Drag-and-drop.

  4. Wählen Sie die Funktion aus, die Sie mit dem Anzeigen-Callback verknüpfen möchten. Wählen Sie für die parametrisierten Anzeigen-Callbacks die Funktion aus, mit der die dynamische Variable akzeptiert wird, damit Sie den Parameterwert aus dem SDK abrufen können.

AdGameObject aus Skript verwenden

AdGameObject-Instanz aus dem Skript abrufen

Alle AdGameObject-Objekte haben die praktische Methode LoadAd(). Dadurch wird eine Anzeige mit einem einfachen AdRequest ohne Targeting geladen. Um Targeting anzuwenden, verwenden Sie LoadAd(AdRequest adRequest) in Verbindung mit Ihrer eigenen konfigurierten Anzeigenanfrage.

Um die Instanz eines AdGameObject zu erhalten, verwenden Sie für jedes Format die folgende Methode:

MobileAds.Instance.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

Das zurückgegebene BannerAdGameObject-Objekt enthält auch die praktischen Methoden Hide() und Show().

Interstitial

MobileAds.Instance.GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

Das zurückgegebene InterstitialAdGameObject-Objekt hat die praktische Methode ShowIfLoaded().

Verfügbar

MobileAds.Instance.GetAd<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

Das zurückgegebene RewardedAdGameObject-Objekt hat die praktische Methode ShowIfLoaded().

Sie können beispielsweise eine Instanz einer BannerAdGameObject abrufen und so laden:

using UnityEngine;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class BannerTestScript : MonoBehaviour
{
    BannerAdGameObject bannerAd;

    void Start()
    {
        bannerAd = MobileAds.Instance
            .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

        bannerAd.LoadAd();
        ...
    }
    ...
}

Wenn ein BannerAdGameObject namens BannerAd vorhanden ist, können Sie so eine Instanz davon abrufen:

MobileAds.Instance.GetAd<BannerAdGameObject>("BannerAd");

Auf das zugrunde liegende Anzeigenobjekt in AdGameObject zugreifen

Diese Snippets veranschaulichen, wie auf das zugrunde liegende Anzeigenobjekt zugegriffen wird, das mit dem AdGameObject verknüpft ist.

BannerAdGameObject bannerAd = MobileAds.Instance
    .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

// Access BannerView object
BannerView bannerView = bannerAd.BannerView;

Interstitial

InterstitialAdGameObject interstitialAdGameObject = MobileAds.Instance
    .GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

// Access InterstitialAd object
InterstitialAd interstitialAd = interstitialAdGameObject.InterstitialAd;

Verfügbar

RewardedAdGameObject rewardedAdGameObject = MobileAds.Instance
    .Get<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

// Access RewardedAd object
RewardedAd rewardedAd = rewardedAdGameObject.RewardedAd;

Beispiele

Interstitial-Anzeige einblenden

Das folgende Beispiel zeigt, wie Sie ein Spiel so konfigurieren, dass eine Interstitial-Anzeige mit einem AdGameObject geladen und ausgeliefert wird.

Fügen Sie der Szene ein InterstitialAdGameObject hinzu und aktivieren Sie die Funktion Automatisches Laden aktiviert, damit die Anzeige beim Laden der Szene automatisch geladen wird.

Prüfen Sie als Nächstes, ob Sie das SDK wie folgt initialisiert haben. Die Funktion Automatisches Laden in AdGameObject funktioniert nicht, wenn Sie vergessen, das SDK zu initialisieren.

Anschließend wird durch Aufrufen der Funktion InterstitialAdGameObject.ShowIfLoaded() zwischen Bildschirmübergängen eine Interstitial-Anzeige eingeblendet. Der folgende Code zeigt ein Beispiel für die Auslieferung einer Interstitial-Anzeige zwischen einem Szenenübergang.

using UnityEngine;
using UnityEngine.SceneManagement;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAd<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }

    public void OnClickShowGameSceneButton()
    {
        // Display an interstitial ad
        interstitialAd.ShowIfLoaded();

        // Load a scene named "GameScene"
        SceneManager.LoadScene("GameScene");
    }
}

Da Sie die Funktion Automatisches Laden im Anzeigen-Placement aktiviert haben, müssen Sie nicht explizit eine Anzeige anfordern. Wenn sich die Szene ändert, wird gegebenenfalls eine Interstitial-Anzeige eingeblendet.

Wenn Sie eine Anzeige manuell anfordern möchten, deaktivieren Sie die Funktion Automatisches Laden im Anzeigen-Placement-Prüftool und rufen Sie stattdessen die Funktion InterstitialAdGameObject.LoadAd() auf. Das folgende Code-Snippet zeigt, wie Sie eine Anzeige manuell anfordern.

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAdGameObject<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("MobileAds initialized");

            // Load an interstitial ad after the SDK initialization is complete
            interstitialAd.LoadAd();
        });
    }
    ...
}

Status der Schaltfläche „Anzeige mit Prämie ansehen“ verarbeiten

Das folgende Beispiel zeigt, wie Sie die Schaltfläche „Anzeige mit Prämie ansehen“ mithilfe von Anzeigen-Placements aktivieren.

Fügen Sie der Szene ein Button GameObject (mit dem Namen Button) hinzu, das zum Ausliefern einer Anzeige mit Prämie verwendet wird. Diese Schaltfläche wird nur angezeigt, wenn eine Anzeige mit Prämie verfügbar ist.

Ändern Sie in der Methode Start() den aktiven Status der Schaltfläche in false. Dadurch verschwindet die Schaltfläche aus der Szene.

public class MainScene : MonoBehaviour
{
    ...
    void Start()
    {
        GameObject.Find("Button").SetActive(false);
        ...
    }
}

Fügen Sie der Szene eine RewardedAdGameObject hinzu und wählen Sie im Drop-down-Menü das Anzeigen-Placement AdMob-Demo mit Prämie aus.

Klicken Sie im RewardedAdGameObject-Inspector im Abschnitt „Callbacks“ auf die Schaltfläche + von On Ad Loaded(), damit die Funktion aufgerufen wird, wenn eine Anzeige mit Prämie geladen wird.

Ziehen Sie das Button GameObject, das Sie im vorherigen Schritt hinzugefügt haben, in das Feld None (Object). Wählen Sie aus der Dropdown-Liste eine Funktion aus, die aufgerufen werden soll. Klicken Sie auf No Function > GameObject > SetActive(bool) (Keine Funktion > GameObject > SetActive(bool)). Klicken Sie dann auf das Kästchen, damit true als Parameter gesendet wird (SetActive(true) wird aufgerufen).

In diesem Callback-Bereich können Sie auch ein Ereignis verknüpfen, das aufgerufen wird, wenn das RewardedAd.OnUserEarnedReward-Ereignis ausgelöst wird. Weitere Informationen finden Sie in diesem Abschnitt.

Legen Sie dann die Schaltfläche so fest, dass beim Anklicken eine Anzeige mit Prämie eingeblendet wird. Klicken Sie im Schaltflächen-Inspector im Abschnitt On Click() Callbacks auf die Schaltfläche +. Ziehen Sie dann das GameObject für das Placement für Anzeigen mit Prämie (in diesem Beispiel mit dem Namen Prämierte Anzeige) in das Feld Keine (Objekt).

Hängen Sie dann die Funktion RewardedAdGameObject.ShowIfLoaded() an den On Click()-Callback der Schaltfläche an.

Vergessen Sie nicht, das SDK zu initialisieren. Das folgende Code-Snippet ist der vollständige Code für die Szene, die in diesem Beispiel verwendet wird:

using UnityEngine;

using GoogleMobileAds.Api;

public class MainScene : MonoBehaviour
{
    void Start()
    {
        GameObject.Find("Button").SetActive(false);

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }
}

Nach dem Ausführen des Projekts ist die Schaltfläche in der Szene zu sehen, sobald eine Anzeige mit Prämie geladen wurde und ausgeliefert werden kann.

Prämien-Callback für ein „Prämiertes AdGameObject“ konfigurieren

Das folgende Beispiel zeigt, wie Sie einen Callback mit Prämie für ein Placement einer Anzeige mit Prämie konfigurieren, damit Sie einem Nutzer eine Prämie schenken können, wenn eine Callback-Funktion aufgerufen wird.

Erstellen Sie ein neues Skript und definieren Sie eine Funktion, die Reward als Parameter akzeptiert. Gehen Sie dazu so vor:

using UnityEngine;
using GoogleMobileAds.Api;

class RewardedTestScript : MonoBehaviour {
    ...
    public void OnUserEarnedReward(Reward reward) {
        Debug.Log("OnUserEarnedReward: reward=" +
            reward.Type + ", amount=" + reward.Amount);
    }
    ...
}

Hängen Sie das Skript RewardedTestScript an ein beliebiges GameObject (mit Ausnahme des GameObjects für die Anzeigenplatzierung) in der Szene an. In diesem Beispiel ist es an das GameObject der Hauptkamera angehängt.

Fügen Sie der Szene ein RewardedAdGameObject hinzu. Klicken Sie dann im Abschnitt „Callbacks“ im RewardedAdGameObject-Inspector auf die Schaltfläche + für On User Earned Reward (Prämie), um die Funktion zu aktivieren, die aufgerufen wird, wenn einem Nutzer eine Prämie gewährt wird.

Ziehen Sie das GameObject der Hauptkamera, das Sie im vorherigen Schritt hinzugefügt haben, in das Feld None (Object) (Keine (Objekt)). Wählen Sie im Drop-down-Menü eine Funktion aus, die aufgerufen werden soll. Klicken Sie auf No Function > RewardTestScript > OnUserEarnedReward.

Nachdem Sie das Projekt ausgeführt und eine Anzeige mit Prämie angesehen haben, wird RewardedTestScript.OnUserEarnedReward() aufgerufen, wenn Sie für die Interaktion mit der Anzeige eine Prämie erhalten.