Z tego przewodnika dowiesz się, jak wdrożyć dodatek 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. Pasują też do projektu wizualnego aplikacji, w której są umieszczone. Format reklam natywnych Ad Managera umożliwia wydawcom renderowanie reklam, które są bez problemu z treścią. Za pomocą tej technologii można wdrażać które w pełni wykorzystują natywny kod aplikacji Unity.
Reklamy natywne są wyświetlane przy użyciu tych samych typów danych (GameObjects
) co w przypadku
które już tworzysz aplikacje i można je sformatować tak, aby pasowały do projektu wizualnego
wrażeniami użytkowników. Po wczytaniu reklamy natywnej aplikacja
odbiera obiekt natywny zawierający zasoby i aplikację Unity, a nie
SDK, je wyświetla.
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.
Wczytaj formaty reklam natywnych
Reklamy natywne są ładowane za pomocą klasy AdLoader
, która ma własną klasę
AdLoader.Builder
, aby dostosować ją 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 wczyta się lub nie uda się wczytać, dodaj
przekazuje do klasy AdLoader
dla zdarzeń wymienionych poniżej.
OnNativeAdLoaded
Wywoływana po wczytaniu reklamy natywnej. Musisz mieć dostępu do wczytanej reklamy.
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
Podczas wczytywania reklamy natywnej wywoływane jest zdarzenie reklamy dla odpowiedniego 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>
.
, umieszczoną w obiekcie NativeAd
, można pobrać z
NativeAdEventArgs
jak pokazano:
private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
}
Pobieranie zasobów reklam natywnych
Po załadowaniu reklam ich zasoby będą dostępne, jak pokazano poniżej. Graficzny
zasobów są zwracane jako obiekty Texture2D
, a komponenty tekstowe – jako
string
obiektów.
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 komponenty reklamowe powinny być dostępne tylko w głównym wątku, np. z metody Update()
w skrypcie 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
oznacza liczbę zarejestrowanych GameObject
.
Jeśli rejestracja komponentu reklamy się nie powiedzie, wyświetlenia i kliknięcia odpowiadająca jej reklama natywna nie zostanie rozpoznana.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
Zarejestrowany w komponencie reklamy obiekt GameObject
musi zawierać zderzacz wypukły
który jest reprezentatywny dla rozmiaru i kształtu elementu 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 funkcja
Urządzenie BoxCollider
jest podłączone do urządzenia GameObject
. Będzie automatycznie skalowane do
umieść 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ć 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;
}