Miejsca docelowe reklam

Z tego przewodnika dowiesz się, jak za pomocą funkcji miejsc docelowych reklam we wtyczce reklam mobilnych Google dla środowiska Unity tworzyć i wyświetlać reklamy w aplikacji.

Wymagania wstępne

Inicjowanie Google Mobile Ads Unity Plugin

Zanim aplikacja wczyta reklamy, musi zainicjować Google Mobile Ads Unity Plugin wywołując MobileAds.Initialize(), z wywołaniem zwrotnym Action<InitializationStatus>. 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 Unity Plugin.
        MobileAds.Initialize((initStatus) =>
        {
            // SDK initialization is complete
        });
        ...
    }
}

Tworzenie miejsc docelowych reklam

Pierwszym krokiem w wyświetlaniu banera za pomocą reklam mobilnych Google jest utworzenie i skonfigurowanie miejsca docelowego reklamy. W edytorze Unity możesz wybrać miejsce docelowe reklamy w formacie banera, reklamy pełnoekranowej lub reklamy z nagrodą, klikając kolejno Assets (Zasoby) > Google Mobile Ads (Reklamy mobilne Google) > Ad Placements (Miejsca docelowe reklam). Następnie skonfiguruj 3 miejsca docelowe reklam demonstracyjnych, które są 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:

Placement Name (Nazwa miejsca docelowego)
Nazwa miejsca docelowego. Służy do identyfikowania miejsc docelowych podczas konfigurowania reklam w scenie.
Ad Format (Format reklamy)
Baner, reklama z nagrodą, reklama pełnoekranowa. Typ reklamy.
Ad unit ID (Identyfikator jednostki reklamowej)
Podaj identyfikator jednostki reklamowej banera na Androida i iOS. Musisz podać co najmniej 1 identyfikator jednostki reklamowej.
Persistent across scenes (Trwałe w różnych scenach)
Gdy to pole jest zaznaczone, baner będzie widoczny na ekranie niezależnie od zmian sceny (tak samo jak w przypadku DontDestroyOnLoad).
Auto Load Enabled (Automatyczne wczytywanie włączone)
Gdy to pole jest zaznaczone, 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 My Awesome Banner (Mój wspaniały baner).

Dodawanie obiektu AdGameObject do sceny

Obiekt AdGameObject w formacie banera, reklamy pełnoekranowej lub reklamy z nagrodą możesz dodać do sceny w edytorze Unity, klikając kolejno GameObject > Google Mobile Ads (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. Na zrzucie ekranu poniżej widać przykład obiektu AdGameObject o nazwie Banner Ad (Baner reklamowy).

Ustawienia obiektu AdGameObject

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

Ad Placement (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 banerów reklamowych w menu będą widoczne tylko skonfigurowane miejsca docelowe banerów reklamowych.

Konfiguracja BannerAdGameObject (tylko baner)

  • Size (Rozmiar) – wybierz rozmiar banera, którego chcesz użyć.
    • Anchored Adaptive Banner (Zakotwiczony baner adaptacyjny) ma kilka dodatkowych opcji:
      • Orientation (Orientacja) – wybierz orientację urządzenia używaną do obliczania wysokości reklamy.
      • Use full screen width (Użyj pełnej szerokości ekranu) – gdy to pole jest zaznaczone, baner będzie zajmować całą szerokość ekranu. Jeśli odznaczysz pole Use full screen width (Użyj pełnej szerokości ekranu), możesz dostosować szerokość ekranu w procentach (50–99%).
    • Custom (Niestandardowy) umożliwia podanie szerokości i wysokości banera.
  • Ad Position (Pozycja reklamy) – wybierz pozycję, w której ma się znajdować baner.

Wywołania zwrotne

Możesz zaimplementować funkcje odpowiadające wywołaniom zwrotnym reklamy. Jeśli na przykład chcesz obsługiwać sytuację, 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 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 dołączono skrypt.

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

Używanie obiektu AdGameObject ze skryptu

Pobieranie instancji obiektu AdGameObject ze skryptu

Wszystkie obiekty AdGameObject mają wygodną metodę LoadAd(). Spowoduje to wczytanie reklamy za pomocą zwykłego, nieukierunkowanego obiektu AdRequest. Aby zastosować kierowanie, użyj LoadAd(AdRequest adRequest), korzystając z własnego skonfigurowanego żą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ż wygodne metody Hide() i 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ę obiektu 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 masz obiekt BannerAdGameObject o nazwie BannerAd, możesz uzyskać jego instancję w ten sposób:

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

Dostęp do obiektu reklamy w obiekcie 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 konfigurowania gry do wczytywania i wyświetlania reklamy pełnoekranowej za pomocą obiektu AdGameObject.

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

Następnie upewnij się, że pakiet SDK został zainicjowany w ten sposób. Pamiętaj, że jeśli zapomnisz zainicjować pakietu SDK, funkcja Auto Load (Automatyczne wczytywanie) w obiekcie AdGameObject nie będzie działać.

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

Ponieważ w miejscu docelowym reklamy włączono funkcję Auto Load (Automatyczne wczytywanie), nie musisz wyraźnie prosić o reklamę. Gdy scena się zmieni, pojawi się reklama pełnoekranowa, jeśli jest gotowa.

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

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 włączania przycisku „Obejrzyj reklamę z nagrodą” za pomocą miejsc docelowych reklam.

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

W metodzie Start() zmień stan aktywny 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 w menu wybierz miejsce docelowe reklamy AdMob Demo Rewarded Ad (Reklama z nagrodą w wersji demonstracyjnej AdMob).

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

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

W tej sekcji Callbacks (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 tak, aby po kliknięciu wyświetlał reklamę z nagrodą. W sekcji Callbacks (Wywołania zwrotne) On Click() (Po kliknięciu) w inspektorze przycisku kliknij przycisk + i przeciągnij oraz upuść obiekt GameObject miejsca docelowego reklamy z nagrodą (w tym przykładzie o nazwie Rewarded Ad (Reklama z nagrodą)) do pola None (Object) (Brak (obiekt)).

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

Na koniec nie zapomnij zainicjować pakietu SDK. Poniższy 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 wyświetlany 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 konfigurowania wywołania zwrotnego dotyczącego nagrody w przypadku miejsca docelowego reklamy z nagrodą, aby można było przyznać użytkownikowi nagrodę po wywołaniu funkcji wywołania zwrotnego.

Utwórz nowy skrypt i zdefiniuj funkcję, która akceptuje parametr Reward 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 (z wyjątkiem obiektu GameObject miejsca docelowego reklamy) w scenie. W tym przykładzie jest on dołączony do obiektu GameObject Main Camera.

Dodaj do sceny obiekt RewardedAdGameObject. Następnie w sekcji Callbacks (Wywołania zwrotne) w inspektorze RewardedAdGameObject kliknij przycisk + w polu On User Earned Reward (Reward) (Gdy użytkownik otrzyma nagrodę (nagroda)) , aby włączyć wywoływanie funkcji po przyznaniu użytkownikowi nagrody.

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

Po uruchomieniu projektu i obejrzeniu reklamy z nagrodą zostanie wywołana funkcja RewardedTestScript.OnUserEarnedReward(), gdy otrzymasz nagrodę za interakcję z reklamą.