Per iniziare

Questa guida spiega come utilizzare il componente aggiuntivo per gli annunci nativi per implementare gli annunci nativi AdMob in un'app Unity, nonché alcuni aspetti importanti da considerare durante la procedura.

Gli annunci nativi si adattano al formato e alla funzione dell'esperienza utente in cui vengono posizionati. Inoltre, si adattano al design visivo dell'app in cui sono posizionati. Il formato degli annunci nativi di AdMob consente ai publisher di pubblicare annunci perfettamente integrati con i contenuti. Puoi usare questa tecnologia per implementare rendering altamente personalizzati che sfruttano appieno il codice nativo nelle app Unity.

Gli annunci nativi vengono mostrati utilizzando gli stessi tipi di GameObjects con cui stai utilizzando stanno già creando le tue app e possono essere formattati in base al design visivo l'esperienza utente in cui vivono. Quando un annuncio nativo viene caricato, la tua app riceve un oggetto nativo che contiene i suoi asset e l'app Unity (anziché l'SDK) le visualizzi.

Prerequisiti

  • Plug-in Unity Google Mobile Ads versione 7.0.0 o successive.
  • Completa la Guida introduttiva.
  • Scarica e installa il componente aggiuntivo per gli annunci nativi.

Caricare i formati degli annunci nativi

Gli annunci nativi vengono caricati tramite la classe AdLoader, che ha una propria AdLoader.Builder corso per personalizzarlo durante la creazione. ForNativeAd() configura l'AdLoader per la gestione degli annunci nativi.

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForNativeAd()
        .Build();
}

Registrati per gli eventi annuncio AdLoader

Per ricevere una notifica quando un annuncio nativo viene caricato correttamente o meno, aggiungi delegati alla classe AdLoader per gli eventi elencati di seguito.

OnNativeAdLoaded

Richiamato quando un annuncio nativo viene caricato correttamente. Per accedere all'annuncio caricato è necessario avere un delegato per questo evento.

OnAdFailedToLoad

Viene invocato quando non riesce a caricare un annuncio nativo.

Carica l'annuncio

Dopo aver completato la creazione di un AdLoader, chiama il metodo LoadAd() a richiedi un annuncio:

adLoader.LoadAd(new AdRequest.Builder().Build());

Combina la richiesta di annuncio

Lo snippet di codice riportato di seguito mostra come creare un AdLoader configurato per richiedere annunci nativi, imposta delegati per i caricamenti di annunci riusciti e non riusciti ed effettua una richiesta di annuncio.

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());
}

Gestire i caricamenti degli annunci non riusciti

L'evento OnAdFailedToLoad è di tipo EventHandle<AdFailedToLoadEventArgs>. Di seguito è riportato l'analisi del motivo di un errore di caricamento dell'annuncio da questo evento.

private void RequestNativeAd() {
    ...
    adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}

private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
    Debug.Log("Native ad failed to load: " + args.Message);
}

Mostrare un annuncio nativo

Quando viene caricato un annuncio nativo, viene invocato l'evento relativo all'annuncio per il formato dell'annuncio corrispondente. L'app è quindi responsabile della visualizzazione dell'annuncio, ma non farlo immediatamente.

Gestire il carico degli annunci

L'evento OnNativeAdLoaded è di tipo EventHandler<NativeAdEventArgs>. La annuncio, incapsulato in un oggetto NativeAd, può essere recuperato da NativeAdEventArgs come mostrato:

private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
}

Recuperare gli asset annuncio nativi

Una volta caricati gli annunci, è possibile accedere ai relativi asset come mostrato di seguito. Grafica gli asset vengono restituiti come oggetti Texture2D, mentre gli asset di testo vengono restituiti come string oggetti.

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

Tieni presente che agli asset annuncio si deve accedere solo nel thread principale, ad esempio dal metodo Update() di uno script Unity. Tieni inoltre presente che la presenza dei seguenti asset non è sempre garantita e devono essere controllati prima di essere visualizzati:

  • GetStarRating()
  • GetStore()
  • GetPrice()
  • GetAdvertiser()
  • GetIconTexture()

Asset Scegli Tu!

È obbligatorio mostrare l'asset annuncio Scegli Tu! nell'ambito dell'annuncio nativo. Inoltre, è importante che l'asset annuncio Scegli Tu! sia facilmente visibile, quindi scegli i colori e le immagini di sfondo in modo appropriato.

Registra GameObjects per l'asset annuncio

Devi registrare il GameObject affinché l'asset annuncio venga visualizzato nella tua app Unity. Se la registrazione va a buon fine, il metodo utilizzato per registrare il GameObject restituisce un bool. Per un List<GameObject>, il metodo restituisce un int che indica il conteggio GameObject registrato correttamente.

Se la registrazione di un asset annuncio non va a buon fine, le impressioni e i clic sull'annuncio nativo corrispondente non verranno riconosciuti.

if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
    // Handle failure to register the icon ad asset.
}

Il GameObject registrato per un asset annuncio deve avere un componente Collider concavo rappresentativo delle dimensioni e della forma del GameObject. Se In GameObject oggetti registrati negli asset annuncio mancano Collider componenti o se ne ha uno configurato in modo errato, gli annunci nativi non funzioneranno correttamente.

Nello snippet di codice riportato di seguito, viene aggiunto un BoxCollider a GameObject che utilizza un TextMesh per visualizzare l'asset annuncio principale di un annuncio nativo. Una volta BoxCollider è collegato al dispositivo GameObject e verrà scalato automaticamente a contenere il testo del componente 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>();

Demo

Il seguente codice illustra come recuperare correttamente l'asset icona di un annuncio nativo caricato, visualizza l'asset annuncio dell'icona impostando la texture di un Quad, e registra il GameObject da utilizzare per visualizzare la risorsa. Questo processo recupera l'asset annuncio e registralo con la classe di annunci nativi, ripetuto per ciascuno degli asset mostrati nell'app.

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