Rozpocznij

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. Pasują też do projektu wizualnego aplikacji, w której są umieszczone. Format reklam natywnych AdMob umożliwia wydawcom renderowanie reklam z treściami. Za pomocą tej technologii możesz zastosować niestandardowe renderowanie które w pełni wykorzystują natywny kod w aplikacjach 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 jego zasoby oraz aplikację Unity (zamiast SDK).

Wymagania wstępne

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ę

Gdy skończysz tworzenie obiektu AdLoader, wywołaj jego metodę LoadAd(), aby żądania reklamy:

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 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 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. Zostanie automatycznie przeskalowane 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>();

Wersja demonstracyjna

Ten kod pokazuje, jak pobrać zasób ikony wczytana reklama natywna, wyświetl komponent reklamy ikony, ustawiając teksturę Quad, i zarejestruj GameObject, by użyć go do wyświetlenia zasobu. 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;
}