Anzeigen-Placements

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

Vorbereitung

Google Mobile Ads SDK initialisieren

Initialisieren Sie das Google Mobile Ads SDK vor dem Laden von Anzeigen, indem Sie MobileAds.Initialize() mit einem Action<InitializationStatus>-Callback aufrufen. Dies muss nur einmal erfolgen, idealerweise beim Starten der App.

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

Anzeigen-Placements erstellen

Um ein Banner mit Google Mobile Ads zu präsentieren, müssen Sie zuerst eine Anzeigenplatzierung erstellen und konfigurieren. Im Unity-Editor können Sie unter Assets > Google Mobile Ads > Ad Placements (Assets > Google Mobile Ads > Anzeigen-Placements) ein Anzeigen-Placement im Banner-, Interstitial- oder Videoformat mit Prämie auswählen. Anschließend werden drei Demo-Anzeigen-Placements eingerichtet, die sofort verwendet werden können.

Wenn Sie einen neuen Anzeigen-Placement hinzufügen möchten, klicken Sie am Ende der Liste auf die Schaltfläche Neuen Placement hinzufügen. Sie können die Anzeigenplatzierung in der Ansicht „Inspector“ konfigurieren.

Konfiguration des Anzeigen-Placements

Jede Platzierung hat die folgenden Attribute:

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

Der folgende Screenshot zeigt ein Beispiel für eine Anzeigenplatzierung mit dem Namen My Awesome Banner (Mein tolles Banner).

AdGameObject zur Szene hinzufügen

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

Nachdem Sie der Szene ein AdGameObject hinzugefügt haben, wird im Unity-Editor in der Hierarchieansicht ein GameObject angezeigt, das die Anzeige repräsentiert.

Sie können den Namen des Placements ändern, indem Sie den Namen des GameObject selbst ändern. Der folgende Screenshot zeigt ein Beispiel für ein AdGameObject mit dem Namen Banner Ad.

AdGameObject-Einstellungen

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

Anzeigen-Placement

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

BannerAdGameObject-Konfiguration (nur Banner)

  • Größe: Wählen Sie die Größe des Banners aus, das Sie verwenden möchten.
    • Adaptive Ankerbanner bieten einige zusätzliche Optionen:
      • Ausrichtung: Wählen Sie die Geräteausrichtung aus, die zum Berechnen der Anzeigenhöhe verwendet werden soll.
      • Vollbildbreite verwenden: Wenn diese Option aktiviert ist, nimmt das Banner die gesamte Bildschirmbreite ein. Sie können die Breite in Prozent des Bildschirms (50–99 %) anpassen, wenn Sie die Option Vollbildbreite verwenden deaktivieren.
    • Bei Benutzerdefiniert können Sie die Breite und Höhe des Banners angeben.
  • 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 Sie beispielsweise festlegen möchten, was passiert, wenn eine Banneranzeige nicht geladen werden kann:

  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 oben genannte Funktion enthält, an ein beliebiges GameObject in der Szene an.

  3. Klicken Sie auf die Schaltfläche + und ziehen Sie dann das GameObject per Drag-and-drop, an das Sie das Script angehängt haben.

  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, die die dynamische Variable akzeptiert, damit Sie den Parameterwert aus dem SDK abrufen können.

AdGameObject über ein Skript verwenden

AdGameObject-Instanz aus dem Skript abrufen

Alle AdGameObject-Objekte haben die Hilfsmethode LoadAd(). Dadurch wird eine Anzeige mit einem einfachen, nicht ausgerichteten AdRequest geladen. Wenn Sie Targeting anwenden möchten, sollten Sie LoadAd(AdRequest adRequest) mit Ihrer eigenen konfigurierten Anzeigenanfrage verwenden.

Verwenden Sie für jedes Format die folgende Methode, um die Instanz eines AdGameObject abzurufen:

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

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

Interstitial

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

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

Verfügbar

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

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

So können Sie beispielsweise eine Instanz von BannerAdGameObject abrufen und 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 es eine BannerAdGameObject mit dem Namen BannerAd gibt, können Sie eine Instanz davon so abrufen:

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

Auf das zugrunde liegende Anzeigenobjekt in AdGameObject zugreifen

In diesen Snippets wird gezeigt, wie Sie auf das zugrunde liegende Anzeigenobjekt zugreifen, das dem AdGameObject zugeordnet 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

Hier sehen Sie ein Beispiel dafür, wie Sie ein Spiel so konfigurieren, dass eine Interstitial-Anzeige mithilfe eines AdGameObject geladen und präsentiert wird.

Fügen Sie der Szene ein InterstitialAdGameObject hinzu und aktivieren Sie die Funktion Auto Load Enabled (Automatisches Laden aktiviert), damit die Anzeige automatisch geladen wird, wenn die Szene geladen wird.

Prüfen Sie als Nächstes, ob Sie das SDK wie unten beschrieben initialisiert haben. Die Funktion AutoLoad in AdGameObject funktioniert nicht, wenn Sie das SDK nicht initialisieren.

Rufen Sie dann die Funktion InterstitialAdGameObject.ShowIfLoaded() auf, um zwischen einem Bildschirmübergang eine Interstitial-Anzeige zu präsentieren. Der folgende Code zeigt ein Beispiel für die Anzeige einer Interstitial-Anzeige zwischen Szenenübergängen.

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 Auto Load (Automatisch laden) im Anzeigen-Placement aktiviert haben, müssen Sie keine Anzeige explizit anfordern. Wenn sich die Szene ändert, wird eine Interstitial-Anzeige eingeblendet, sofern eine verfügbar ist.

Wenn Sie eine Anzeige manuell anfordern möchten, deaktivieren Sie die Funktion Auto Load in der Anzeigenplatzierungsübersicht 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

Hier sehen Sie ein Beispiel dafür, wie Sie mithilfe von Anzeigen-Placements eine Schaltfläche zum Ansehen von Anzeigen mit Prämie aktivieren können.

Fügen Sie der Szene ein Button-GameObject hinzu (in diesem Beispiel mit dem Namen Button), das zum Anzeigen 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 wird die Schaltfläche aus der Szene entfernt.

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

Fügen Sie der Szene ein RewardedAdGameObject hinzu und wählen Sie im Drop-down-Menü das Anzeigen-Placement AdMob Demo Rewarded Ad aus.

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

Ziehen Sie das Button-GameObject, das Sie im vorherigen Schritt hinzugefügt haben, per Drag-and-drop in das Feld None (Object). Wählen Sie im Drop-down-Menü eine Funktion aus, die aufgerufen werden soll. Klicken Sie auf No Function > GameObject > SetActive(bool) und dann auf das Kästchen, damit true als Parameter gesendet wird (Aufrufe von SetActive(true)).

In diesem Abschnitt „Callbacks“ 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.

Als Nächstes erstellen Sie die Schaltfläche, mit der eine Anzeige mit Prämie eingeblendet wird, wenn darauf geklickt wird. Klicken Sie im Bereich On Click() (Bei Klick) im Schaltflächeninspektor auf die Schaltfläche + und ziehen Sie das GameObject für die Platzierung von Anzeigen mit Prämie (in diesem Beispiel Rewarded Ad) in das Feld None (Object) (Kein Objekt).

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

Vergessen Sie nicht, das SDK zu initialisieren. Das folgende Code-Snippet enthält den vollständigen Code für die in diesem Beispiel verwendete Szene:

using UnityEngine;

using GoogleMobileAds.Api;

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

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

Sobald Sie das Projekt ausführen, wird die Schaltfläche in der Szene angezeigt, wenn eine Anzeige mit Prämie geladen wurde und bereit ist, präsentiert zu werden.

Callback zur Freigabe der Prämie für ein RewardedAdGameObject konfigurieren

Hier sehen Sie ein Beispiel für die Konfiguration eines Callback mit Prämie für einen Placement mit Prämie, damit Sie einem Nutzer eine Prämie geben können, wenn eine Callback-Funktion aufgerufen wird.

Erstellen Sie ein neues Skript und definieren Sie eine Funktion, die Reward als Parameter akzeptiert.

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 RewardedTestScript-Script an ein beliebiges GameObject in der Szene an, mit Ausnahme des AdPlacement-GameObjects. In diesem Beispiel ist es an das GameObject „Main Camera“ angehängt.

Fügen Sie der Szene ein RewardedAdGameObject hinzu. Klicken Sie dann im Bereich „Callbacks“ (Rückrufe) im RewardedAdGameObject-Inspector auf die Schaltfläche + neben On User Earned Reward (Reward) (Wenn Nutzer Prämie erhalten haben (Prämie)), damit die Funktion aufgerufen wird, wenn ein Nutzer eine Prämie erhält.

Ziehen Sie das Main Camera-GameObject, das Sie im vorherigen Schritt hinzugefügt haben, per Drag-and-drop in das Feld None (Object). Wählen Sie im Drop-down-Menü eine Funktion aus, die aufgerufen werden soll. Klicken Sie auf No Function > RewardedTestScript > OnUserEarnedReward.

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