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
Unity 2017.4 lub nowsza.
Pobierz i zaimportuj wczesną wersję wtyczki GMA Unity.
Ustaw identyfikator aplikacji AdMob w edytorze Unity.
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.
- Zakotwiczony baner adaptacyjnyma kilka innych opcji:
- 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:
Utwórz funkcję zgodną z wywołaniem zwrotnym reklamy.
public void OnBannerAdFailedToLoad(string reason) { Debug.Log("Banner ad failed to load: " + reason); }
Do skryptu GameObject dodaj na scenie skrypt zawierający powyższą funkcję.
Kliknij przycisk +, a następnie przeciągnij & upuść obiekt GameObject, do którego załączono skrypt.
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:
Baner
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.
Baner
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ą.