Miejsca docelowe reklam

Z tego przewodnika dowiesz się, jak używać funkcji Miejsca docelowe reklam w wtyczce reklam mobilnych Google dla środowiska Unity, aby tworzyć i wyświetlać reklamy w aplikacji.

Wymagania wstępne

Inicjowanie pakietu SDK do reklam mobilnych Google

Przed wczytaniem reklam zainicjuj pakiet SDK do reklam mobilnych Google, wywołując funkcję MobileAds.Initialize()Action<InitializationStatus> wywołaniem zwrotnym. Należy to zrobić tylko raz, najlepiej przy uruchomieniu aplikacji.

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
        });
        ...
    }
}
MobileAds.Initialize(string appID)

Tworzenie miejsc docelowych reklam

Pierwszym krokiem w wyświetlaniu banera za pomocą reklam mobilnych Google jest utworzenie i skonfigurowanie miejsca na reklamę. W edytorze Unity możesz wybrać miejsce docelowe reklamy w formacie banera, reklamy pełnoekranowej lub reklamy z nagrodą w sekcji Komponenty > Reklamy mobilne Google > Miejsca docelowe reklam. Następnie zostaną skonfigurowane 3 miejsca docelowe reklam demonstracyjnych, które będą gotowe do użycia.

Aby dodać nowe miejsce docelowe reklamy, kliknij przycisk Add New Placement (Dodaj nowe miejsce docelowe) na końcu listy. Miejsce docelowe reklamy możesz skonfigurować w widoku inspektora.

Konfiguracja miejsca docelowego reklamy

Każde miejsce docelowe ma te właściwości:

Nazwa miejsca docelowego
Nazwa miejsca docelowego. Używany do identyfikowania miejsc docelowych podczas konfigurowania reklam w scenie.
Format reklamy
Baner, reklama z nagrodą, reklama pełnoekranowa. Typ reklamy.
Identyfikator jednostki reklamowej
Podaj identyfikator banera reklamowego na Androida i iOS. Musisz podać co najmniej 1 identyfikator jednostki reklamowej.
Trwałe w różnych scenach
Po zaznaczeniu tej opcji baner będzie wyświetlany na ekranie niezależnie od zmian sceny (tak samo jak w przypadku opcji DontDestroyOnLoad).
Automatyczne ładowanie włączone
Po zaznaczeniu tej opcji reklama będzie wczytywana automatycznie po wczytaniu sceny powiązanej z miejscem docelowym reklamy.

Na zrzucie ekranu poniżej widać przykład miejsca docelowego reklamy o nazwie Mój wspaniały baner.

Dodawanie obiektu AdGameObject do sceny

Możesz dodać obiekt AdGameObject dla formatów banerowego, pełnoekranowego lub z nagrodą do sceny, wybierając w edytorze Unity opcje GameObject > Google Mobile Ads (Obiekt gry > Reklamy mobilne Google). Wybierz format, aby dodać miejsce docelowe do aktywnej sceny.

Po dodaniu obiektu AdGameObject do sceny w widoku hierarchii Edytora Unity zobaczysz obiekt GameObject reprezentujący reklamę.

Nazwę miejsca docelowego możesz zmienić, zmieniając nazwę samego obiektu GameObject. Poniższy zrzut ekranu przedstawia przykładowy obiekt AdGameObject o nazwie Banner Ad.

Ustawienia AdGameObject

Obiekt AdGameObject możesz skonfigurować w scenie w widoku inspektora w ustawieniach komponentu Ad Game Object (Script).

Miejsce docelowe reklamy

Wybierz miejsce docelowe reklamy z listy skonfigurowanych miejsc docelowych. Lista będzie zawierać tylko jednostki reklamowe w odpowiednim formacie. Na przykład w przypadku obiektów gry banerowej menu będzie zawierać tylko skonfigurowane miejsca docelowe banerów reklamowych.

BannerAdGameObject konfiguracja (tylko baner)

  • Rozmiar – wybierz rozmiar banera, którego chcesz użyć.
    • Zakotwiczony baner adaptacyjny oferuje kilka dodatkowych opcji:
      • Orientacja – wybierz orientację urządzenia używaną do obliczania wysokości reklamy.
      • Użyj pełnej szerokości ekranu – jeśli to pole jest zaznaczone, baner zajmuje całą szerokość ekranu. Możesz dostosować szerokość ekranu w procentach (50–99%), jeśli odznaczysz opcję Używaj pełnej szerokości ekranu.
    • Niestandardowy umożliwia podanie szerokości i wysokości banera.
  • Pozycja reklamy – wybierz pozycję, w której ma się wyświetlać baner.

Wywołania zwrotne

Możesz wdrażać funkcje odpowiadające wywołaniom zwrotnym reklamy. Jeśli na przykład chcesz obsługiwać sytuacje, w których nie udało się wczytać banera reklamowego:

  1. Utwórz funkcję zgodną z wywołaniem zwrotnym reklamy.

    public void OnBannerAdFailedToLoad(string reason) {
        Debug.Log("Banner ad failed to load: " + reason);
    }
    
  2. Dołącz skrypt zawierający powyższą funkcję do dowolnego obiektu GameObject w scenie.

  3. Kliknij przycisk +, a następnie przeciągnij i upuść obiekt GameObject, do którego został dołączony skrypt.

  4. Wybierz funkcję, którą chcesz połączyć z wywołaniem zwrotnym reklamy. W przypadku wywołań zwrotnych reklam z parametrami wybierz funkcję, która akceptuje zmienną dynamiczną, aby można było pobrać wartość parametru z pakietu SDK.

Używanie obiektu AdGameObject ze skryptu

Pobieranie instancji AdGameObject ze skryptu

Wszystkie obiekty AdGameObject mają wygodną metodę LoadAd(). Spowoduje to wczytanie reklamy z prostym, niekierowanym AdRequest. Aby zastosować kierowanie, użyj LoadAd(AdRequest adRequest)skonfigurowanego przez siebie żądania reklamy.

Aby uzyskać instancję obiektu AdGameObject, użyj tej metody w przypadku każdego formatu:

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

Zwrócony obiekt BannerAdGameObject ma też metody pomocnicze Hide()Show().

Pełnoekranowa

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

Zwrócony obiekt InterstitialAdGameObject ma wygodną metodę ShowIfLoaded().

Z nagrodą

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

Zwrócony obiekt RewardedAdGameObject ma wygodną metodę ShowIfLoaded().

Możesz na przykład uzyskać instancję BannerAdGameObject i załadować ją w ten sposób:

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

Jeśli istnieje BannerAdGameObject o nazwie BannerAd, możesz uzyskać jego instancję w ten sposób:

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

Dostęp do obiektu reklamy w klasie AdGameObject

Te fragmenty kodu pokazują, jak uzyskać dostęp do obiektu reklamy powiązanego z obiektem AdGameObject.

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

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

Pełnoekranowa

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

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

Z nagrodą

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

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

Przykłady

Wyświetlanie reklamy pełnoekranowej

Oto przykład konfiguracji gry, która wczytuje i wyświetla reklamę pełnoekranową za pomocą obiektu AdGameObject.

Dodaj InterstitialAdGameObject do sceny i włącz funkcję Auto Load Enabled, aby reklama była wczytywana automatycznie po wczytaniu sceny.

Następnie sprawdź, czy pakiet SDK został zainicjowany w ten sposób: Pamiętaj, że funkcja Auto Load w obiekcie AdGameObject nie będzie działać, jeśli zapomnisz zainicjować pakietu SDK.

Następnie wyświetl reklamę pełnoekranową między przejściami ekranu, wywołując funkcję InterstitialAdGameObject.ShowIfLoaded(). Poniższy kod pokazuje przykład wyświetlania reklamy pełnoekranowej między przejściami scen.

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

Ponieważ w miejscu docelowym reklamy masz włączoną funkcję automatycznego wczytywania, nie musisz wyraźnie wysyłać żądania reklamy. Gdy scena się zmieni, pojawi się reklama pełnoekranowa, jeśli jest gotowa.

Jeśli chcesz ręcznie wysłać prośbę o reklamę, wyłącz funkcję Automatyczne wczytywanie w inspektorze miejsc docelowych reklam i zamiast tego wywołaj funkcję InterstitialAdGameObject.LoadAd(). Poniższy fragment kodu pokazuje, jak ręcznie wysłać żądanie reklamy.

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

Obsługa stanu przycisku „Obejrzyj reklamę z nagrodą”

Oto przykład, jak włączyć przycisk „Obejrzyj reklamę z nagrodą” za pomocą miejsc docelowych reklam.

Dodaj do sceny obiekt Button GameObject (w tym przykładzie o nazwie Button), który będzie służyć do wyświetlania reklamy z nagrodą. Przycisk będzie dostępny tylko wtedy, gdy dostępna jest reklama z nagrodą.

W metodzie Start() zmień stan przycisku na false. Spowoduje to zniknięcie przycisku ze sceny.

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

Dodaj do sceny obiekt RewardedAdGameObject i z menu wybierz AdMob Demo Rewarded Ad Ad Placement.

W sekcji Callbacks (Wywołania zwrotne) w inspektorze RewardedAdGameObject kliknij przycisk + w obszarze On Ad Loaded(), aby włączyć wywoływanie funkcji po wczytaniu reklamy z nagrodą.

Przeciągnij i upuść obiekt Button GameObject dodany w poprzednim kroku do pola None (Object). Wybierz z menu funkcję, która ma być wywoływana. Kliknij No Function > GameObject > SetActive(bool), a następnie kliknij pole wyboru, aby wysłać true jako parametr (wywołuje SetActive(true)).

W sekcji Wywołania zwrotne możesz też połączyć zdarzenie, które zostanie wywołane, gdy zostanie uruchomione zdarzenie RewardedAd.OnUserEarnedReward. Więcej informacji znajdziesz w tej sekcji.

Następnie utwórz przycisk, który po kliknięciu będzie wyświetlać reklamę z nagrodą. W sekcji On Click() Callbacks w inspektorze przycisku kliknij przycisk +, a następnie przeciągnij i upuść obiekt Rewarded Ad Placement (w tym przykładzie o nazwie Rewarded Ad) do pola None (Object).

Następnie dołącz funkcję RewardedAdGameObject.ShowIfLoaded() do wywołania zwrotnego On Click() przycisku.

Na koniec nie zapomnij zainicjować pakietu SDK. Ten fragment kodu to kompletny kod sceny użytej w tym przykładzie:

using UnityEngine;

using GoogleMobileAds.Api;

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

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

Po uruchomieniu projektu przycisk pojawi się na scenie, gdy reklama z nagrodą zostanie wczytana i będzie gotowa do wyświetlenia.

Konfigurowanie wywołania zwrotnego dotyczącego nagrody w przypadku obiektu RewardedAdGameObject

Oto przykład konfiguracji wywołania zwrotnego reklamy z nagrodą w miejscu docelowym reklamy z nagrodą, dzięki czemu możesz przyznać użytkownikowi nagrodę, gdy zostanie wywołana funkcja wywołania zwrotnego.

Utwórz nowy skrypt i zdefiniuj funkcję, która przyjmuje Reward jako parametr, w ten sposób:

using UnityEngine;
using GoogleMobileAds.Api;

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

Dołącz skrypt RewardedTestScript do dowolnego obiektu GameObject w scenie (z wyjątkiem obiektu AdPlacement). W tym przykładzie jest on dołączony do obiektu Main Camera GameObject.

Dodaj RewardedAdGameObject do sceny. Następnie w sekcji Wywołania zwrotne w inspektorze RewardedAdGameObject kliknij przycisk + w obszarze On User Earned Reward (Reward), aby włączyć wywoływanie funkcji, gdy użytkownik otrzyma nagrodę.

Przeciągnij i upuść obiekt Main Camera GameObject dodany w poprzednim kroku do pola None (Object). Wybierz funkcję, która ma być wywoływana, z menu. Kliknij No Function (Brak funkcji) > RewardedTestScript (Skrypt testowy z nagrodą) > OnUserEarnedReward (Gdy użytkownik otrzyma nagrodę).

Gdy uruchomisz projekt i obejrzysz reklamę z nagrodą, wywołana zostanie funkcja RewardedTestScript.OnUserEarnedReward(), która przyzna Ci nagrodę za interakcję z reklamą.