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. 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

Ł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;
}