Miejsca docelowe reklam

Z tego przewodnika dowiesz się, jak tworzyć i wyświetlać reklamy aplikacji za pomocą dostępnej we wtyczce Google Mobile Ads Unity funkcji miejsc docelowych reklam.

Wymagania wstępne

Zainicjuj pakiet SDK do reklam mobilnych Google

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

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

Tworzenie miejsc docelowych reklam

Aby zacząć wyświetlać baner w reklamach mobilnych w Google, musisz najpierw utworzyć i skonfigurować miejsce docelowe reklamy. Miejsce docelowe reklamy w formacie Baner, Reklama pełnoekranowa lub Reklama z nagrodą możesz wybrać w Edytorze Unity w sekcji Zasoby > Reklamy mobilne Google > Miejsca docelowe reklam. Następnie konfigurujemy 3 demonstracyjne miejsca docelowe reklamy.

Aby dodać nowe miejsce docelowe reklamy, kliknij przycisk 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. Służy do identyfikowania miejsc docelowych podczas konfigurowania reklam w danej scenie.
Format reklamy
Baner, reklamy z nagrodą, reklamy pełnoekranowe Typ reklamy.
Identyfikator jednostki reklamowej
Podaj identyfikator jednostki z banerem reklamowym na Androida lub iOS. Musisz podać co najmniej jeden identyfikator jednostki reklamowej.
Trwałe we wszystkich scenach
Po zaznaczeniu tej opcji baner będzie wyświetlany na ekranie niezależnie od zmian sceny (tak samo jak w przypadku DontDestroyOnLoad).
Automatyczne ładowanie włączone
Jeśli zaznaczysz to pole, reklama będzie wczytywana automatycznie po wczytaniu sceny powiązanej z miejscem docelowym.

Zrzut ekranu poniżej pokazuje przykład miejsca docelowego reklamy o nazwie Mój świetny baner.

Dodawanie AdGameObject do sceny

Możesz dodać do sceny format AdGameObject dla banerów, reklam pełnoekranowych lub reklam z nagrodą, wybierając kolejno GameObject > Google Mobile Ads (Reklamy mobilne Google) w edytorze Unity. Wybierz format, aby dodać miejsce docelowe do aktywnej sceny.

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

Możesz zmienić nazwę miejsca docelowego, zmieniając nazwę samego obiektu GameObject. Zrzut ekranu poniżej pokazuje przykład obiektu AdGameObject o nazwie Banner Ad.

Ustawienia AdGameObject

Możesz skonfigurować AdGameObject w scenie, korzystając z widoku inspektora w ustawieniach komponentu Obiekt gry reklamowej (skrypt).

Umieszczanie reklam

Wybierz miejsce docelowe reklamy z listy skonfigurowanych miejsc docelowych. Ta lista będzie zawierać tylko jednostki reklamowe we właściwym formacie. Na przykład w przypadku obiektów gier z banerami reklamowymi w menu pojawią się tylko skonfigurowane miejsca docelowe banerów reklamowych.

Konfiguracja BannerAdGameObject (tylko baner)

  • Rozmiar – wybierz rozmiar banera, którego chcesz użyć.
    • Zakotwiczony baner adaptacyjny ma kilka dodatkowych opcji:
      • Orientacja – wybierz orientację urządzenia używaną do obliczania wysokości reklamy.
      • Użyj szerokości ekranu – jeśli zaznaczysz to pole, baner będzie zajmować szerokość całego ekranu. Możesz dostosować % szerokości ekranu (50–99%), jeśli odznaczysz opcję Używaj szerokości ekranu na pełnym ekranie.
    • Opcja Niestandardowy pozwala określić szerokość i wysokość banera.
  • Pozycja reklamy – wybierz pozycję, w której chcesz umieścić baner.

Wywołania zwrotne

Możesz zaimplementować funkcje, które odpowiadają wywołaniam zwrotnym reklam. Jeśli chcesz np. obsługiwać sytuacje, gdy nie uda 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, który zawiera powyższą funkcję, do dowolnego obiektu GameObject w scenie.

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

  4. Wybierz funkcję, którą chcesz połączyć z wywołaniem zwrotnym reklamy. W przypadku wywołań zwrotnych z parametrami wybierz funkcję akceptowania zmiennej dynamicznej i pobierania wartości parametru z pakietu SDK.

Użyj AdGameObject ze skryptu

Pobierz instancję AdGameObject ze skryptu

Wszystkie obiekty AdGameObject mają wygodną metodę LoadAd(). Spowoduje to wczytanie reklamy ze zwykłym, niekierowanym elementem AdRequest. Aby zastosować kierowanie, użyj żądania LoadAd(AdRequest adRequest) i własnego skonfigurowanego żądania reklamy.

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

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

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

Pełnoekranowa

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

Zwrócony obiekt InterstitialAdGameObject jest dogodną metodą ShowIfLoaded().

Otrzymano

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

Zwrócony obiekt RewardedAdGameObject jest dogodną metodą ShowIfLoaded().

Możesz na przykład pobrać instancję BannerAdGameObject i wczytać 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 BannerAdGameObject ma nazwę BannerAd, możesz uzyskać jego wystąpienie w ten sposób:

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

Dostęp do bazowego obiektu reklamowego w AdGameObject

Te fragmenty kodu pokazują, jak uzyskać dostęp do obiektu reklamowego powiązanego z 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;

Otrzymano

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, jak skonfigurować wczytanie gry i wyświetlić reklamę pełnoekranową za pomocą obiektu AdGameObject.

Dodaj do sceny element InterstitialAdGameObject i włącz funkcję Automatyczne ładowanie, aby reklama wczytywała się automatycznie po wczytaniu sceny.

Następnie upewnij się, że pakiet SDK został zainicjowany w ten sposób. Funkcja Automatyczne ładowanie w obiekcie AdGameObject nie będzie działać, jeśli zapomnisz zainicjować pakiet SDK.

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

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

W miejscu docelowym reklamy masz włączoną funkcję automatycznego ładowania, więc nie musisz od razu wysyłać żądania reklamy. Po zmianie sceny pojawi się reklama pełnoekranowa, jeśli będzie gotowa.

Jeśli chcesz ręcznie wysłać żądanie reklamy, w inspektorze miejsc docelowych reklamy wyłącz funkcję Automatyczne ładowanie i wywołaj funkcję InterstitialAdGameObject.LoadAd(). Z tego fragmentu kodu dowiesz się, 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();
        });
    }
    ...
}

Stan przycisku „Obejrzyj reklamę z nagrodą”

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

Dodaj do sceny element Button GameObject (w tym przykładzie o nazwie Button), który zostanie użyty do wyświetlenia reklamy z nagrodą. Udostępnimy ten przycisk tylko wtedy, gdy dostępna będzie reklama z nagrodą.

W metodzie Start() zmień aktywny stan przycisku na false. Przycisk zniknie ze sceny.

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

Dodaj do sceny element RewardedAdGameObject i wybierz z menu miejsce docelowe reklamy Reklama z nagrodą w wersji demonstracyjnej AdMob.

W sekcji Wywołania zwrotne w inspektorze RewardedAdGameObject kliknij przycisk + przy opcji On Ad Loaded() (W przypadku wczytania reklamy), aby umożliwić wywoływanie funkcji podczas wczytywania reklamy z nagrodą.

Przeciągnij obiekt GameObject przycisku dodany w poprzednim kroku w polu Brak (obiekt). Wybierz z menu funkcję, która ma zostać wywołana. Kliknij Brak funkcji > GameObject > SetActive(bool), a następnie zaznacz pole wyboru, aby wysyłać true jako parametr (wywołuje SetActive(true)).

W tej sekcji Wywołania zwrotne możesz też połączyć zdarzenie, które będzie wywoływane po wywołaniu zdarzenia RewardedAd.OnUserEarnedReward. Więcej informacji znajdziesz w tej sekcji.

Następnie skonfiguruj przycisk, aby po kliknięciu wyświetlała reklamę z nagrodą. W sekcji Wywołania zwrotne On Click() w inspektorze przycisków kliknij przycisk +, a następnie przeciągnij i upuść obiekt gry w miejscu docelowym reklamy z nagrodą (w tym przykładzie o nazwie Reklama z nagrodą) w polu Brak (obiekt).

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 pełny 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 zobaczysz przycisk, kiedy reklama z nagrodą zostanie wczytana i gotowa do wyświetlenia.

Konfigurowanie wywołania zwrotnego nagrody dla RewardedAdGameObject

Oto przykład, jak skonfigurować wywołanie zwrotne reklamy z nagrodą do miejsca docelowego reklamy z nagrodą, by przekazać użytkownikowi nagrodę po wywołaniu funkcji wywołania zwrotnego.

Utwórz nowy skrypt i zdefiniuj funkcję, która akceptuje Reward jako parametr w podany niżej 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 (z wyjątkiem obiektu Gry w miejscu docelowym reklamy) w scenie. W tym przykładzie jest on dołączony do obiektu GameObject głównego aparatu.

Dodaj do sceny RewardedAdGameObject. Następnie w sekcji Wywołania zwrotne w inspektorze RewardedAdGameObject kliknij przycisk + obok opcji Nagroda dla użytkownika (nagroda), aby umożliwić wywołanie tej funkcji po przyznaniu użytkownikowi nagrody.

Przeciągnij obiekt gry głównej kamery dodany w poprzednim kroku i upuść go w polu None (Object) (Brak). Wybierz z menu funkcję, która ma być wywoływana. Kliknij Brak funkcji > RewardsTestScript > OnUserUzyskanynagroda.

Gdy uruchomisz projekt i obejrzysz reklamę z nagrodą, otrzymasz wywołanie RewardedTestScript.OnUserEarnedReward() za interakcję z reklamą.