Z tego przewodnika dowiesz się, jak używać dodatku do reklam natywnych, aby wdrażać reklamy natywne w aplikacji Unity, oraz na co warto zwrócić uwagę podczas tego procesu.
Reklamy natywne odpowiadają zarówno formie, jak i funkcjom miejsca, w którym się wyświetlają. Pasują też do projektu wizualnego aplikacji, w której są umieszczone. Format reklamy natywnej Ad Managera umożliwia wydawcom renderowanie reklam, które pasują wyglądem do treści. Możesz użyć tej technologii do wdrożenia renderowania niestandardowego, które w pełni wykorzystuje potencjał kodu natywnego w aplikacjach Unity.
Reklamy natywne są wyświetlane przy użyciu tych samych typów GameObjects, których używasz już do tworzenia aplikacji. Można je sformatować tak, aby pasowały do wyglądu interfejsu, w którym się znajdują. Gdy wczytuje się reklama natywna, aplikacja otrzymuje obiekt natywny zawierający jej komponenty, a aplikacja Unity, a nie pakiet SDK, wyświetla je.
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.
Wczytywanie formatów reklam natywnych
Reklamy natywne są wczytywane za pomocą klasy AdLoader, która ma własną klasę AdLoader.Builder umożliwiającą dostosowywanie jej podczas tworzenia. Metoda ForNativeAd() konfiguruje AdLoader do obsługi reklam natywnych.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
}
Rejestrowanie zdarzeń reklamowych AdLoader
Aby otrzymywać powiadomienia o tym, czy reklama natywna została wczytana, czy nie, dodaj do klasy AdLoader obiekty delegowane dla zdarzeń wymienionych poniżej.
OnNativeAdLoaded
Wywoływane, gdy reklama natywna zostanie wczytana. Aby uzyskać dostęp do wczytanej reklamy, musisz mieć przedstawiciela tego zdarzenia.
OnAdFailedToLoad
Wywoływane, gdy nie uda się wczytać reklamy natywnej.
Załaduj reklamę.
Po utworzeniu obiektu AdLoader wywołaj jego metodę LoadAd(), aby poprosić o reklamę:
adLoader.LoadAd(new AdRequest.Builder().Build());
Tworzenie żądania reklamy
Poniższy fragment kodu pokazuje, jak utworzyć obiekt AdLoader skonfigurowany do żądania reklam natywnych, ustawić obiekty delegowane dla udanych i nieudanych wczytań reklam oraz wysł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());
}
Postępowanie w przypadku niepowodzenia wczytywania reklam
Zdarzenie OnAdFailedToLoad jest typu EventHandle<AdFailedToLoadEventArgs>.
Poniżej pokazujemy, jak przeanalizować przyczynę niepowodzenia wczytywania reklamy na podstawie 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
Po wczytaniu reklamy natywnej wywoływane jest zdarzenie reklamowe dla odpowiedniego formatu reklamy. Aplikacja jest wtedy odpowiedzialna za wyświetlenie reklamy, ale nie musi tego robić od razu.
Obsługa wczytywania reklam
Zdarzenie OnNativeAdLoaded jest typu EventHandler<NativeAdEventArgs>. Reklamę, która jest zawarta w obiekcie 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 reklamy natywnej
Po wczytaniu reklam można uzyskać dostęp do ich komponentów w sposób pokazany poniżej. Zasoby graficzne są zwracane jako obiekty Texture2D, a komponenty 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 reklamy powinien być możliwy tylko w głównym wątku, np. z metody Update() skryptu Unity. Pamiętaj też, że nie zawsze można zagwarantować obecność tych komponentów, dlatego przed wyświetleniem należy je sprawdzić:
GetStarRating()GetStore()GetPrice()GetAdvertiser()GetIconTexture()
Komponent Informacja
Komponent reklamy Informacja musi być wyświetlany jako część reklamy natywnej. Ważne jest też, aby komponent reklamy Informacja był dobrze widoczny, dlatego należy odpowiednio dobrać kolory tła i obrazy.
Rejestrowanie obiektów GameObject na potrzeby komponentu reklamy
Aby komponent reklamy wyświetlał się w aplikacji Unity, musisz zarejestrować GameObject. Jeśli rejestracja się powiedzie, metoda użyta do zarejestrowania GameObject zwróci bool. W przypadku List<GameObject> metoda zwraca int wskazujący liczbę zarejestrowanych GameObject.
Jeśli rejestracja komponentu reklamy się nie powiedzie, wyświetlenia i kliknięcia odpowiedniej reklamy natywnej nie będą rozpoznawane.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
GameObject zarejestrowany dla komponentu reklamy musi mieć komponent Collider, który jest wypukły i odpowiada rozmiarowi oraz kształtowi GameObject. Jeśli w obiektach GameObject zarejestrowanych w komponentach reklamy brakuje komponentów Collider lub są one nieprawidłowo skonfigurowane, reklamy natywne nie będą działać prawidłowo.
We fragmencie kodu poniżej element BoxCollider jest dodawany do elementu GameObject, który używa elementu TextMesh do wyświetlania komponentu reklamy z nagłówkiem reklamy natywnej. Po dołączeniu elementu BoxCollider do elementu GameObject zostanie on automatycznie przeskalowany, aby pomieścić tekst komponentu 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ć komponent ikony z prawidłowo wczytanej reklamy natywnej, wyświetlić komponent ikony reklamy przez ustawienie tekstury elementu Quad i zarejestrować element GameObject, który ma służyć do wyświetlania komponentu. Ten proces pobierania komponentu reklamy i rejestrowania go w klasie reklamy natywnej należy powtórzyć w przypadku każdego komponentu wyświetlanego przez aplikację.
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;
}