Korzystanie z miejsc docelowych reklamy

Z tego przewodnika dowiesz się, jak używać wtyczki Miejsca docelowe reklam mobilnych Google do tworzenia i wyświetlania reklam w aplikacji.

Wymagania wstępne

Zainicjuj pakiet SDK do reklam mobilnych Google

Przed wczytaniem reklam zainicjuj pakiet SDK do reklam mobilnych, wywołując metodę MobileAds.Initialize() z wywołaniem zwrotnym Action<InitializationStatus>. Wystarczy to zrobić tylko raz, najlepiej przy uruchamianiu 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 reklamy

Aby zacząć wyświetlać baner z reklamami mobilnymi Google, najpierw utwórz i skonfiguruj miejsce docelowe reklamy. Miejsce docelowe banera, reklamy pełnoekranowej lub reklamy z nagrodą możesz wybrać z sekcji Zasoby > Reklamy mobilne Google i Miejsca docelowe reklam w Edytorze Unity. Następnie tworzy się 3 miejsca docelowe reklam i gotowe do użycia.

Aby dodać nowe miejsce docelowe reklamy, kliknij przycisk Dodaj nowe miejsce docelowe na końcu listy. Możesz skonfigurować miejsce docelowe reklamy w widoku inspektora.

Konfiguracja miejsca docelowego reklamy

Każde miejsce docelowe ma następujące właściwości:

Nazwa miejsca docelowego
Nazwa miejsca docelowego. Służy do identyfikowania miejsc docelowych podczas konfigurowania reklam w scenie.
Format reklamy
Banery, 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 1 identyfikator jednostki reklamowej.
Nie rozpraszaj widzów
Po zaznaczeniu tej opcji baner będzie wyświetlał się na ekranie niezależnie od zmian sceny (to samo zachowanie co DontDestroyOnLoad).
Automatyczne wczytywanie włączone
Po zaznaczeniu tej opcji reklama zostanie automatycznie wczytana, gdy scena powiązana z miejscem docelowym zostanie załadowana.

Poniższy zrzut ekranu przedstawia przykładowe miejsce docelowe reklamy o nazwie Mój fajny baner.

Dodawanie obiektu AdGameObject do sceny

Aby dodać do swojej sceny reklamę AdGameObject dla banera, reklamy pełnoekranowej lub reklamy z nagrodą, użyj GameObject > Google Mobile Ads w Edytorze Unity. Wybierz format, aby dodać miejsce docelowe do aktywnej sceny.

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

Możesz zmienić nazwę miejsca docelowego, zmieniając nazwę samego obiektu GameObject. Poniższy zrzut ekranu przedstawia przykład obiektu AdGameObject o nazwie Baner reklamowy.

Ustawienia AdGameObject

Możesz skonfigurować obiekt AdGameObject w scenie w widoku inspektora w ustawieniach komponentu Obiekt reklamy w grach (skrypt).

Umieszczanie reklam

Wybierz miejsce docelowe z listy skonfigurowanych miejsc docelowych. Lista zawiera tylko jednostki reklamowe we właściwym formacie. Na przykład w przypadku obiektów w banerze gier w menu będą widoczne tylko skonfigurowane miejsca docelowe banerów reklamowych.

Konfiguracja BannerAdGameObject (tylko baner)

  • Rozmiar – wybierz rozmiar banera, którego chcesz użyć.
    • Zakotwiczony baner adaptacyjnyma kilka innych opcji:
      • Orientacja – wybierz orientację urządzenia używaną do obliczania wysokości reklamy.
      • Użyj pełnej szerokości ekranu – po zaznaczeniu tej opcji baner zajmie całą szerokość ekranu. Jeśli odznaczysz opcję Użyj pełnej szerokości ekranu, możesz dostosować wartość procentową ekranu (50–99%).
    • Opcja Niestandardowy umożliwia podanie szerokości i wysokości baneru.
  • Pozycja reklamy – wybierz pozycję, na którym chcesz umieścić baner.

Wywołania zwrotne

Możesz zaimplementować funkcje, które odpowiadają wywołaniom zwrotnym reklamy. Jeśli na przykład chcesz obsługiwać stronę z banerem reklamowym:

  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 skryptu GameObject dodaj na scenie skrypt zawierający powyższą funkcję.

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

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

Używanie obiektu AdGameObject ze skryptu

Pobieranie instancji AdGameObject ze skryptu

Wszystkie obiekty AdGameObject mają przypisaną metodę wygodnych właściwości LoadAd(). Spowoduje to wczytanie reklamy ze zwykłym, niedocelowym AdRequest. Aby zastosować kierowanie, użyj LoadAd(AdRequest adRequest) z własnym skonfigurowanym żądaniem reklamy.

Aby uzyskać wystąpienie elementu AdGameObject, w przypadku każdego formatu użyj tej metody:

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

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

Reklama pełnoekranowa

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

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

Otrzymano

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

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

Możesz na przykład pobrać 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 występuje tag BannerAdGameObject o nazwie BannerAd, możesz otrzymać wystąpienie podobnego do tego:

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

Dostęp do obiektu reklamy w AdGameObject

Fragmenty kodu pokazują, jak uzyskać dostęp do bazowego obiektu reklamowego powiązanego z elementem AdGameObject.

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

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

Reklama 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 reklam pełnoekranowych

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

Dodaj do sceny tag InterstitialAdGameObject i włącz opcję Auto Load Enabled (Włączone automatyczne ładowanie), aby reklama była wczytywana automatycznie po wczytaniu sceny.

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

Następnie wyświetl reklamę pełnoekranową między przejściem z ekranu, wywołując funkcję InterstitialAdGameObject.ShowIfLoaded(). Ten kod pokazuje przykład wyświetlania reklamy pełnoekranowej między scenami.

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ż funkcja Automatyczne wczytywanie w miejscu docelowym reklamy jest włączona, nie musisz specjalnie prosić o reklamę. Po scenie pojawi się reklama pełnoekranowa, jeśli jest gotowa.

Jeśli chcesz ręcznie wysłać żądanie reklamy, wyłącz w inspektorze miejsc docelowych reklamy funkcję Automatyczne wczytywanie i zamiast niej wywołaj funkcję InterstitialAdGameObject.LoadAd(). Ten 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 &konkretnego stanu przycisku „Reklama z nagrodą”

Oto przykład, który dotyczy włączenia przycisku „Obejrzyj reklamę z nagrodą za pomocą miejsc docelowych reklam”.

Dodaj do swojej sceny przycisk GameObject (w tym przykładzie będzie to Button), który posłuży do wyświetlania reklamy z nagrodą. Przycisk ten będzie dostępny tylko wtedy, gdy dostępna będzie reklama z nagrodą.

W metodzie Start() zmień stan przycisku na false. Dzięki temu ten przycisk zniknie z widoku.

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

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

W sekcji Wywołania zwrotne w inspektorze RewardedAdGameObject kliknij przycisk + na stronie On Ad Loaded(), by włączyć funkcję wywoływaną po załadowaniu reklamy z nagrodą.

Przeciągnij obiekt Button GameObject dodany w poprzednim kroku i upuść go w polu Brak (Object) (Brak). Z menu wybierz funkcję, która ma zostać wywołana. Kliknij No Function > GameObject > SetActive(bool), a następnie zaznacz pole wyboru, by wysyłać true jako parametr (wywołanie SetActive(true)).

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

Następnie po kliknięciu przycisku wyświetl reklamę z nagrodą. W sekcji On()

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

Pamiętaj też o zainicjowaniu pakietu SDK. Ten fragment kodu zawiera pełny kod sceny używanej 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 na ekranie pojawi się przycisk, który pojawi się, gdy wczyta się reklama z nagrodą i będzie gotowa do wyświetlenia.

Konfigurowanie wywołania zwrotnego nagrody w reklamie z nagrodą

Oto przykład konfiguracji wywołania zwrotnego reklamy z nagrodą w miejscu docelowym reklamy z nagrodą. Dzięki temu możesz przekazać nagrodę użytkownikowi, gdy wywoływana jest funkcja wywołania zwrotnego.

Utwórz nowy skrypt i zdefiniuj funkcję, która akceptuje parametr Reward w poniższy 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 GameObject miejsca docelowego reklamy) w scenie. W tym przykładzie jest on dołączony do głównego obiektu GameObject Game.

Dodaj do sceny kamerę RewardedAdGameObject. Następnie w sekcji Wywołania zwrotne w inspektorze RewardedAdGameObject kliknij przycisk + na stronie Nagroda dla użytkownika (nagroda), aby włączyć funkcję wywoływaną po przyznaniu nagrody użytkownikowi.

Przeciągnij główny obiekt GameObject dodany w poprzednim kroku do pola Brak (Object) (Brak). Wybierz z menu funkcję, która ma zostać wywołana. Kliknij No Function > RewardedTestScript > OnUserEarnedReward.

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