App-Start-Anzeigen von AdMob zu einer Unity-App hinzufügen

1. Einführung

In diesem Codelab implementieren Sie eine AdMob-App-Start-Anzeige in einer Unity-App.

Aufgaben

In diesem Codelab erfahren Sie, wie Sie eine App-Start-Anzeige von AdMob in einer Unity-App mit dem Google Mobile Ads Unity-Plug-in implementieren.

6338548c3f73e7cf.gif

Wenn Sie bei der Bearbeitung dieses Codelabs auf Probleme stoßen (z. B. Codefehler, Grammatikfehler oder unklare Formulierungen), melden Sie das Problem über den Link Fehler melden unten links im Codelab.

Lerninhalte

  • Das Google Mobile Ads Unity-Plug-in konfigurieren
  • Eine App-Start-Anzeige in einer Unity-App implementieren

Voraussetzungen

  • Unity 2018.4 oder höher
  • Xcode 12 oder höher und CocoaPods (für die Bereitstellung auf iOS-Geräten)

Wie würden Sie Ihre Erfahrung mit AdMob bewerten?

Anfänger Mittelstufe Fortgeschritten

2. Entwicklungsumgebung einrichten

Code herunterladen

Nachdem Sie die ZIP-Datei heruntergeladen haben, extrahieren Sie ihren Inhalt. Sie haben einen Ordner mit dem Namen admob-appopen-unity-main.

Alternativ können Sie das GitHub-Repository über die Befehlszeile klonen:

$ git clone https://github.com/googlecodelabs/admob-appopen-unity

Das Repository enthält zwei Ordner:

  • android_studio_folder.png starter:Der Startcode, auf dem Sie in diesem Codelab aufbauen.
  • android_studio_folder.png complete:Der vollständige Code für dieses Codelab.

3. AdMob-App und ‑Anzeigenblöcke einrichten

Da Unity ein plattformübergreifendes SDK ist, müssen Sie in AdMob eine App und Anzeigenblöcke sowohl für Android als auch für iOS hinzufügen.

Für Android einrichten

Für die Einrichtung für Android müssen Sie eine Android-App hinzufügen und Anzeigenblöcke erstellen.

Android-App hinzufügen

  1. Klicken Sie in der AdMob-Konsole im Menü Apps auf APP HINZUFÜGEN.
  2. Wählen Sie Android als Plattform aus. Wenn Sie gefragt werden, ob die App in einem unterstützten App-Shop veröffentlicht wurde, klicken Sie auf NEIN.
  3. Geben Sie AdMob app open ad in das Feld für den Namen der App ein.
  4. Die Aktivierung von Nutzermesswerten ist für dieses Codelab nicht erforderlich. Wir empfehlen Ihnen jedoch, dies zu tun, da Sie so das Nutzerverhalten besser nachvollziehen können. Klicken Sie auf HINZUFÜGEN, um den Vorgang abzuschließen.

Anzeigenblock erstellen

  1. Wählen Sie in der AdMob-Konsole im Menü Apps die App AdMob-App-Start-Anzeige (Android) aus.
  2. Klicken Sie auf das Menü Anzeigenblöcke.

  1. Klicken Sie auf ANZEIGENBLOCK HINZUFÜGEN.
  2. Wählen Sie App-Start-Anzeige als Format aus.
  3. Geben Sie in das Feld Name des Anzeigenblocks android-appopen ein.
  4. Klicken Sie auf AD UNIT ERSTELLEN, um den Vorgang abzuschließen.

Normalerweise dauert es einige Stunden, bis in einem neuen Anzeigenblock Anzeigen ausgeliefert werden können.

Wenn Sie das Verhalten der Anzeige sofort testen möchten, verwenden Sie die Test-App-ID und die Anzeigenblock-IDs, die in den Tabellen „Android-App-ID/Anzeigenblock-ID“ und „iOS-App-ID/Anzeigenblock-ID“ aufgeführt sind.

Für iOS einrichten

Für die Einrichtung für iOS müssen Sie eine iOS-App hinzufügen und Anzeigenblöcke erstellen.

iOS-App hinzufügen

  1. Klicken Sie in der AdMob-Konsole im Menü Apps auf APP HINZUFÜGEN.
  2. Wählen Sie iOS als Plattform aus. Wenn Sie gefragt werden, ob die App in einem unterstützten App-Shop veröffentlicht wurde, klicken Sie auf NEIN.
  3. Geben Sie AdMob app open ad in das Feld für den Namen der App ein.
  4. Die Aktivierung von Nutzermesswerten ist für dieses Codelab nicht erforderlich. Wir empfehlen Ihnen jedoch, dies zu tun, da Sie so das Nutzerverhalten besser nachvollziehen können. Klicken Sie auf HINZUFÜGEN, um den Vorgang abzuschließen.

Anzeigenblock erstellen

  1. Wählen Sie in der AdMob-Konsole im Menü Apps die App AdMob-Inline-Anzeigen (iOS) aus.
  2. Klicken Sie auf das Menü Anzeigenblöcke.

  1. Klicken Sie auf ANZEIGENBLOCK HINZUFÜGEN.
  2. Wählen Sie App-Start-Anzeige als Format aus.
  3. Geben Sie in das Feld Name des Anzeigenblocks ios-appopen ein.
  4. Klicken Sie auf AD UNIT ERSTELLEN, um den Vorgang abzuschließen.

Normalerweise dauert es einige Stunden, bis in einem neuen Anzeigenblock Anzeigen ausgeliefert werden können.

Wenn Sie das Verhalten der Anzeige sofort testen möchten, verwenden Sie die in der folgenden Tabelle aufgeführten Test-App-IDs und Anzeigenblock-IDs.

Optional: AdMob-Test-App und ‑Anzeigenblöcke verwenden

Wenn Sie das Codelab durcharbeiten möchten, ohne selbst eine neue Anwendung und Anzeigenblöcke zu erstellen, können Sie die in den folgenden Tabellen aufgeführten Test-IDs für AdMob-Apps und Anzeigenblöcke verwenden.

Android-App-ID/Anzeigenblock-ID

Posten

App-ID/Anzeigenblock-ID

AdMob-App-ID

ca-app-pub-3940256099942544~3347511713

Anzeigenblock-ID

ca-app-pub-3940256099942544/3419835294

iOS-App-ID/Anzeigenblock-ID

Posten

App-ID/Anzeigenblock-ID

AdMob-App-ID

ca-app-pub-3940256099942544~1458002511

Anzeigenblock-ID

ca-app-pub-3940256099942544/5662855259

Weitere Informationen zu Testanzeigen finden Sie in der Entwicklerdokumentation zu Android-Testanzeigen und iOS-Testanzeigen.

4. Google Mobile Ads Unity-Plug-in hinzufügen

Das Google Mobile Ads Unity-Plug-in ist der erste Schritt, um AdMob-Anzeigen einzublenden und Einnahmen zu erzielen.

Unity-Plug-in für mobile Anzeigen herunterladen

Mit dem Google Mobile Ads Unity-Plug-in können Unity-Entwickler ganz einfach Google Mobile Ads in Android- und iOS-Apps ausliefern. Das Plug-in bietet eine C#-Schnittstelle zum Anfordern von Anzeigen, die von C#-Skripts in Ihrem Unity-Projekt verwendet wird.

Über den Link unten können Sie das Unity-Paket für das Plug-in herunterladen.

Starterprojekt öffnen

  1. Starten Sie Unity Hub.
  2. Klicken Sie auf dem Tab Projekte auf die Schaltfläche HINZUFÜGEN.
  3. Wechseln Sie zu dem Ordner, in dem Sie den heruntergeladenen Code im Schritt „Entwicklungsumgebung einrichten“ extrahiert haben.
  4. Öffnen Sie den Ordner starter.
  5. Das Starter-Projekt wird in der Projektliste angezeigt. Klicken Sie auf das Projekt, um es im Unity-Editor zu öffnen.

Mobile Ads Unity-Plug-in importieren

  1. Wählen Sie im Unity-Editor im Menü Assets > Import Package > Custom Package aus.
  2. Wählen Sie die GoogleMobileAds-{VERSION}.unitypackage aus, die Sie im vorherigen Schritt heruntergeladen haben.
  3. Achten Sie darauf, dass alle Dateien ausgewählt sind, und klicken Sie auf Importieren.

AdMob-App-ID festlegen

  1. Wählen Sie im Unity-Editor im Menü Assets > Google Mobile Ads > Settings aus.
  2. Geben Sie Ihre Android- und iOS-AdMob-App-ID in die entsprechenden Felder ein. Wenn Sie das Codelab durcharbeiten möchten, ohne selbst eine neue Anwendung und Anzeigenblöcke zu erstellen, geben Sie die Test-App-ID für AdMob wie folgt ein.

8890521e199b1090.png

5. Utility-Klasse erstellen

Erstellen Sie im Ordner Scripts eine neue Klasse mit dem Namen AppOpenAdManager. Diese Klasse verwaltet eine Instanzvariable, um eine geladene Anzeige und die Anzeigenblock-ID für jede Plattform zu erfassen.

AppOpenAdManager.cs

using System;
using GoogleMobileAds.Api;
using UnityEngine;

public class AppOpenAdManager
{
#if UNITY_ANDROID
    // Test ad unit ID: ca-app-pub-3940256099942544/3419835294
    private const string AD_UNIT_ID = "<YOUR_ANDROID_APPOPEN_AD_UNIT_ID>";
#elif UNITY_IOS
    // Test ad unit ID: ca-app-pub-3940256099942544/5662855259
    private const string AD_UNIT_ID = "<YOUR_IOS_APPOPEN_AD_UNIT_ID>";
#else
    private const string AD_UNIT_ID = "unexpected_platform";
#endif

    private static AppOpenAdManager instance;

    private AppOpenAd ad;

    private bool isShowingAd = false;

    public static AppOpenAdManager Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new AppOpenAdManager();
            }

            return instance;
        }
    }

    private bool IsAdAvailable
    {
        get
        {
            return ad != null;
        }
    }

    public void LoadAd()
    {
        // TODO: Load an app open ad.
    }
}

Anzeige laden

Das Laden einer Anzeige erfolgt mit der statischen Methode AppOpenAd.LoadAd(). Für die Methode „load“ sind eine Anzeigenblock-ID, ein ScreenOrientation-Modus, ein AdRequest-Objekt und ein Completion-Handler erforderlich, der aufgerufen wird, wenn das Laden der Anzeige erfolgreich ist oder fehlschlägt.

Das geladene AppOpenAd-Objekt wird als Parameter im Abschluss-Handler bereitgestellt. Implementieren Sie die Methode LoadAd() so:

AppOpenAdManager.cs

public class AppOpenAdManager
{
    ...

    public void LoadAd()
    {
        AdRequest request = new AdRequest.Builder().Build();

        // Load an app open ad for portrait orientation
        AppOpenAd.LoadAd(AD_UNIT_ID, ScreenOrientation.Portrait, request, ((appOpenAd, error) =>
        {
            if (error != null)
            {
                // Handle the error.
                Debug.LogFormat("Failed to load the ad. (reason: {0})", error.LoadAdError.GetMessage());
                return;
            }

            // App open ad is loaded.
            ad = appOpenAd;
        }));
    }
}

Anzeige einblenden

Bevor die Anzeige ausgeliefert wird, müssen Sie sich für jeden Event-Handler registrieren, um auf jedes Anzeigenereignis zu reagieren.

AppOpenAdManager.cs

public class AppOpenAdManager
{
    ...

    public void ShowAdIfAvailable()
    {
        if (!IsAdAvailable || isShowingAd)
        {
            return;
        }

        ad.OnAdDidDismissFullScreenContent += HandleAdDidDismissFullScreenContent;
        ad.OnAdFailedToPresentFullScreenContent += HandleAdFailedToPresentFullScreenContent;
        ad.OnAdDidPresentFullScreenContent += HandleAdDidPresentFullScreenContent;
        ad.OnAdDidRecordImpression += HandleAdDidRecordImpression;
        ad.OnPaidEvent += HandlePaidEvent;

        ad.Show();
    }

    private void HandleAdDidDismissFullScreenContent(object sender, EventArgs args)
    {
        Debug.Log("Closed app open ad");
        // Set the ad to null to indicate that AppOpenAdManager no longer has another ad to show.
        ad = null;
        isShowingAd = false;
        LoadAd();
    }

    private void HandleAdFailedToPresentFullScreenContent(object sender, AdErrorEventArgs args)
    {
        Debug.LogFormat("Failed to present the ad (reason: {0})", args.AdError.GetMessage());
        // Set the ad to null to indicate that AppOpenAdManager no longer has another ad to show.
        ad = null;
        LoadAd();
    }

    private void HandleAdDidPresentFullScreenContent(object sender, EventArgs args)
    {
        Debug.Log("Displayed app open ad");
        isShowingAd = true;
    }

    private void HandleAdDidRecordImpression(object sender, EventArgs args)
    {
        Debug.Log("Recorded ad impression");
    }

    private void HandlePaidEvent(object sender, AdValueEventArgs args)
    {
        Debug.LogFormat("Received paid event. (currency: {0}, value: {1}",
                args.AdValue.CurrencyCode, args.AdValue.Value);
    }
}

Ablauf von Anzeigen berücksichtigen

Anzeigenreferenzen in App-Start-Anzeigen laufen nach vier Stunden ab. Anzeigen, die mehr als vier Stunden nach dem Zeitpunkt der Anfrage gerendert werden, sind nicht länger gültig und erzielen möglicherweise keine Einnahmen.

Ändern Sie die IsAdAvailable-Property des AppOpenAdManager, um zu prüfen, wie lange es her ist, dass Ihre Anzeige geladen wurde, damit keine abgelaufene Anzeige ausgeliefert wird. Prüfen Sie dann mit dieser Methode, ob die Anzeige noch gültig ist.

AppOpenAdManager.cs

public class AppOpenAdManager
{
    ...

    // TODO: Add loadTime field
    private DateTime loadTime;

    private bool IsAdAvailable
    {
        get
        {
            // TODO: Consider ad expiration
            return ad != null && (System.DateTime.UtcNow - loadTime).TotalHours < 4;
        }
    }

    public void LoadAd()
    {
        if (IsAdAvailable)
        {
            return;
        }

        AdRequest request = new AdRequest.Builder().Build();
        AppOpenAd.LoadAd(AD_UNIT_ID, ScreenOrientation.Portrait, request, ((appOpenAd, error) =>
        {
            if (error != null)
            {
                Debug.LogFormat("Failed to load the ad. (reason: {0})", error.LoadAdError.GetMessage());
                return;
            }

            ad = appOpenAd;
            Debug.Log("App open ad loaded");

            // TODO: Keep track of time when the ad is loaded.
            loadTime = DateTime.UtcNow;
        }));
    }
}

6. Szene aktualisieren, damit die Anzeige geladen/ausgeliefert wird

Aktualisieren Sie die Start()-Methode in der MainScene-Klasse, um beim Start der Szene eine App-Open-Anzeige zu laden.

Wenn Sie über Ereignisse zum Wechsel in den Vordergrund benachrichtigt werden möchten, empfehlen wir, auf das Singleton „AppStateEventNotifier“ zu warten. Durch die Implementierung des AppStateEventNotifier.AppStateChanged-Delegaten wird Ihre App über App-Start- und Vordergrundereignisse informiert und kann die Anzeige einblenden.

MainScene.cs

using GoogleMobileAds.Api;
using GoogleMobileAds.Common;
using UnityEngine;

public class MainScene : MonoBehaviour
{
    public void Start()
    {
        // TODO: Request an app open ad.
        MobileAds.Initialize((initStatus) =>
        {
            AppOpenAdManager.Instance.LoadAd();
            AppStateEventNotifier.AppStateChanged += OnAppStateChanged;
        });
    }

    public void OnAppStateChanged(AppState state)
    {
        if (state == AppState.Foreground)
        {
            // TODO: Show an app open ad if available.
            AppOpenAdManager.Instance.ShowAdIfAvailable();
        }
    }
}

Geschafft! Erstellen Sie das Projekt und führen Sie es auf einem Gerät oder einem Emulator aus. Warten Sie nach dem Starten der App einige Sekunden, damit die Anzeige vollständig geladen werden kann.

Wenn Sie dann von anderen Apps oder dem Startbildschirm zur App zurückkehren, wird die App-Start-Anzeige wie unten dargestellt eingeblendet.

6338548c3f73e7cf.gif

7. Fertig!

Sie haben das Codelab abgeschlossen. Den vollständigen Code für dieses Codelab finden Sie im Ordner android_studio_folder.pngcomplete.