Z tego przewodnika dowiesz się, jak zaimplementować reklamy natywne AdMob, korzystając z dodatku do reklam natywnych reklam w aplikacji Unity oraz ważnych kwestii, które należy wziąć pod uwagę.
Reklamy natywne odpowiadają zarówno formie, jak i funkcjom miejsca, w którym ich pozycjonowanie. Są też dopasowane do projektu graficznego aplikacji, w której się znajdują. Format reklamy natywnej AdMob umożliwia wydawcom renderowanie reklam, które pasują wyglądem do treści. Za pomocą tej technologii możesz zastosować niestandardowe renderowanie które w pełni wykorzystują natywny kod w aplikacjach Unity.
Reklamy natywne wyświetlają się z użyciem tych samych typów GameObjects
, których używasz już do tworzenia aplikacji. Można je formatować tak, aby pasowały do wrażeń użytkownika w aplikacji, w której się znajdują. Gdy wczytuje się reklama natywna, Twoja aplikacja otrzymuje obiekt natywny zawierający jej komponenty, a aplikacja Unity (a nie pakiet SDK) wyświetla te komponenty.
Wymagania wstępne
- Wtyczka Unity do reklam mobilnych Google w wersji 7.0.0 lub nowszej.
- Zapoznaj się z przewodnikiem dla początkujących.
- Pobierz i zainstaluj dodatek do reklam natywnych.
Ładowanie formatów reklam natywnych
Reklamy natywne są ładowane za pomocą klasy AdLoader
, która ma własną klasę AdLoader.Builder
, aby umożliwić jej dostosowywanie podczas tworzenia. ForNativeAd()
konfiguruje AdLoader do obsługi reklam natywnych.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
}
Zarejestruj się na potrzeby zdarzeń reklamowych AdLoader
Aby otrzymywać powiadomienia, gdy reklama natywna zostanie wczytana lub nie uda się jej wczytać, dodaj
przekazuje do klasy AdLoader
dla zdarzeń wymienionych poniżej.
OnNativeAdLoaded
Wywoływane po pomyślnym załadowaniu reklamy natywnej. Aby uzyskać dostęp do wczytanej reklamy, musisz mieć delegowany dostęp do tego zdarzenia.
OnAdFailedToLoad
Wywoływana, gdy nie udało się wczytać reklamy natywnej.
Wczytaj reklamę.
Po utworzeniu obiektu AdLoader
wywołaj metodę LoadAd()
, aby poprosić o reklamę:
adLoader.LoadAd(new AdRequest.Builder().Build());
Łączenie żądania reklamy w całości
Fragment kodu poniżej pokazuje, jak utworzyć obiekt AdLoader
, który jest
skonfigurowana pod kątem żądania reklam natywnych, przekazuje przedstawicieli dotyczących skutecznej i nieudanej reklamy;
wczytuje dane i wysyła żądanie reklamy.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
adLoader.LoadAd(new AdRequest.Builder().Build());
}
Obsługa nieudanych wczytywania reklam
Zdarzenie OnAdFailedToLoad
jest typu EventHandle<AdFailedToLoadEventArgs>
.
Poniżej znajduje się analiza przyczyny niepowodzenia wczytywania reklamy z tego zdarzenia.
private void RequestNativeAd() {
...
adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}
private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
Debug.Log("Native ad failed to load: " + args.Message);
}
Wyświetlanie reklamy natywnej
Gdy wczytuje się reklama natywna, wywoływane jest zdarzenie reklamy dla odpowiadającego jej formatu. To aplikacja odpowiada za wyświetlenie reklamy, chociaż nie nie musi tego zrobić natychmiast.
Obsługa reklam na stronie
Zdarzenie OnNativeAdLoaded
jest typu EventHandler<NativeAdEventArgs>
. Dane zapakowane w obiekt NativeAd
można pobrać z NativeAdEventArgs
w ten sposób:
private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
}
Pobieranie komponentów reklam natywnych
Po załadowaniu reklam ich zasoby będą dostępne, jak pokazano poniżej. Zasoby graficzne są zwracane jako obiekty Texture2D
, a zasoby tekstowe jako obiekty string
.
private bool nativeAdLoaded;
private NativeAd nativeAd;
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for the icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
// Get string for headline asset of native ad.
string headline = this.nativeAd.GetHeadlineText();
}
}
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}
Pamiętaj, że dostęp do komponentów reklam należy uzyskiwać tylko w wątku głównym, np.
z metody Update()
skryptu Unity. Pamiętaj też, że poniższe zasoby są
nie zawsze jest gwarantowana i należy ją sprawdzić przed
wyświetlono:
GetStarRating()
GetStore()
GetPrice()
GetAdvertiser()
GetIconTexture()
Komponent Informacja
Komponent reklamy Informacja musi wyświetlać się w ramach reklamy natywnej. Ważne jest też, aby komponent reklamy Informacja był łatwo widoczny, więc odpowiednie kolory tła i obrazy.
Rejestrowanie obiektów GameObject w zasobie reklamy
Aby komponent reklamy wyświetlał się w Twojej witrynie, musisz zarejestrować GameObject
Aplikacja Unity. Jeśli rejestracja się powiedzie, zostanie użyta metoda
GameObject
zwraca wartość bool
. W przypadku List<GameObject>
metoda zwraca int
, co wskazuje na liczbę pomyślnie zarejestrowanych GameObject
.
Jeśli rejestracja komponentu reklamy się nie powiedzie, wyświetlenia i kliknięcia na odpowiadającej jej reklamie natywnej nie zostaną uwzględnione.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
GameObject
zarejestrowany dla zasobu reklamy musi mieć wypukły komponent Collider, który odzwierciedla rozmiar i kształt GameObject
. Jeśli
W GameObject
obiektu zarejestrowanego w komponentach reklamy brakuje Collider
komponentu
lub nieprawidłowo skonfigurowane, reklamy natywne nie będą działać prawidłowo.
We fragmencie kodu poniżej do elementu GameObject
dodano element BoxCollider
, który używa parametru
TextMesh
, aby wyświetlić komponent reklamy z nagłówkiem reklamy natywnej. Gdy element BoxCollider
zostanie dołączony do elementu GameObject
, zostanie automatycznie dopasowany do tekstu elementu TextMesh
.
// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;
// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;
// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();
Prezentacja
Poniższy kod pokazuje, jak pobrać zasób ikony z poprawnie załadowanej reklamy natywnej, wyświetlić zasób reklamy z ikoną, ustawiając teksturę Quad
, oraz zarejestrować GameObject
, aby wyświetlić zasób. Ten proces
pobranie komponentu reklamy i zarejestrowanie go w klasie reklamy natywnej powinno być
w przypadku każdego komponentu wyświetlanego w aplikacji.
private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
icon.transform.position = new Vector3(1, 1, 1);
icon.transform.localScale = new Vector3(1, 1, 1);
icon.GetComponent<Renderer>().material.mainTexture = iconTexture;
// Register GameObject that will display icon asset of native ad.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register ad asset.
}
}
}
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}