Posizionamenti annunci

Questa guida spiega come utilizzare la funzionalità di posizionamento degli annunci del plug-in Unity di Google Mobile Ads per creare e visualizzare annunci per la tua app.

Prerequisiti

Inizializzare l'SDK Google Mobile Ads

Prima di caricare gli annunci, inizializza l'SDK Mobile Ads chiamando MobileAds.Initialize(), con un callback Action<InitializationStatus>. Questa operazione deve essere eseguita una sola volta, idealmente al momento del lancio dell'app.

using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    ...
    public void Start()
    {
        // Initialize the Mobile Ads SDK.
        MobileAds.Initialize((initStatus) =>
        {
            // SDK initialization is complete
        });
        ...
    }
}

Creazione di posizionamenti degli annunci

Il primo passaggio per la visualizzazione di un banner con gli annunci per cellulari di Google consiste nel creare e configurare un posizionamento dell'annuncio. Puoi selezionare un posizionamento dell'annuncio nel formato banner, interstitial o con premio da Asset > Annunci per dispositivi mobili di Google > Posizionamenti degli annunci nell'editor di Unity. Vengono quindi impostati tre posizionamenti di annunci dimostrativi pronti per l'uso.

Per aggiungere un nuovo posizionamento dell'annuncio, fai clic sul pulsante Aggiungi nuovo posizionamento alla fine dell'elenco. Puoi configurare il posizionamento dell'annuncio dalla vista Controllo.

Configurazione del posizionamento degli annunci

Ogni posizionamento ha le seguenti proprietà:

Nome posizionamento
Nome del posizionamento. Utilizzato per identificare i posizionamenti quando configuri gli annunci in una scena.
Formato dell'annuncio
Banner, Con premio, Interstitial. Tipo di annuncio.
ID unità pubblicitaria
Fornisci il tuo ID unità pubblicitaria banner per Android e iOS. Devi fornire almeno un ID unità pubblicitaria.
Permanente tra le scene
Se questa opzione è selezionata, il banner rimarrà sullo schermo indipendentemente dai cambiamenti di scena (lo stesso comportamento di DontDestroyOnLoad).
Caricamento automatico abilitato
Se questa opzione è selezionata, viene caricato automaticamente un annuncio al caricamento di una scena associata al posizionamento dell'annuncio.

Il seguente screenshot mostra un esempio di posizionamento dell'annuncio denominato Il mio banner fantastico.

Aggiunta di un AdGameObject alla scena

Puoi aggiungere un AdGameObject per i formati banner, interstitial o con premio alla scena utilizzando GameObject > Google Mobile Ads nell'editor di Unity. Seleziona il formato per aggiungere un posizionamento alla scena attiva.

Dopo aver aggiunto un AdGameObject alla scena, vedrai un GameObject che rappresenta l'annuncio nella visualizzazione Gerarchia dell'editor di Unity.

Puoi modificare il nome del posizionamento modificando il nome del gioco stesso. Il seguente screenshot mostra un esempio di un AdGameObject denominato Banner Ad.

Impostazioni di AdGameObject

Puoi configurare AdGameObject nella scena dalla visualizzazione Inspector nelle impostazioni del componente Ad Game Object (Script).

Posizionamento

Seleziona il posizionamento dell'annuncio dall'elenco a discesa dei posizionamenti configurati. L'elenco conterrà solo unità pubblicitarie per il formato corretto. Ad esempio, per gli oggetti di gioco per gli annunci banner, il menu a discesa mostra solo i posizionamenti degli annunci banner configurati.

Configurazione BannerAdGameObject (solo banner)

  • Dimensioni: seleziona le dimensioni del banner che vuoi utilizzare.
    • Il banner adattivo ancorato offre alcune altre opzioni:
      • Orientamento: seleziona l'orientamento del dispositivo utilizzato per calcolare l'altezza dell'annuncio.
      • Usa larghezza a schermo intero: se questa opzione è selezionata, il banner viene visualizzato a schermo intero. Puoi regolare la larghezza dello schermo in percentuale (50~99%) deselezionando l'opzione Usa larghezza a schermo intero.
    • Personalizzati consente di specificare la larghezza e l'altezza del banner.
  • Posizione dell'annuncio: seleziona la posizione in cui deve essere posizionato il banner.

Richiamate

Puoi implementare funzioni che corrispondono ai callback degli annunci. Ad esempio, se vuoi gestire i casi in cui un annuncio banner non viene caricato:

  1. Crea una funzione compatibile con il callback dell'annuncio.

    public void OnBannerAdFailedToLoad(string reason) {
        Debug.Log("Banner ad failed to load: " + reason);
    }
    
  2. Allega lo script che contiene la funzione riportata sopra a qualsiasi oggetto GameObject nella scena.

  3. Fai clic sul pulsante +, quindi trascina il GameObject a cui hai associato lo script.

  4. Seleziona la funzione da collegare al callback dell'annuncio. Per i callback degli annunci con parametri, seleziona la funzione che accetti la variabile dinamica in modo da poter ottenere il valore del parametro dall'SDK.

Utilizza AdGameObject dallo script

Recupera l'istanza AdGameObject dallo script

Tutti gli oggetti AdGameObject hanno il metodo di convenienza LoadAd(). Verrà caricato un annuncio con un AdRequest semplice, senza targeting. Per applicare il targeting, devi utilizzare LoadAd(AdRequest adRequest) utilizzando la richiesta di annuncio configurata.

Per ottenere l'istanza di un AdGameObject utilizza il seguente metodo per ciascun formato:

MobileAds.Instance.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

L'oggetto BannerAdGameObject restituito include anche metodi di utilità Hide() e Show().

Interstitial

MobileAds.Instance.GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

L'oggetto InterstitialAdGameObject restituito ha un metodo di convenienza ShowIfLoaded().

Con premio

MobileAds.Instance.GetAd<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

L'oggetto RewardedAdGameObject restituito ha un metodo di convenienza ShowIfLoaded().

Ad esempio, puoi ottenere un'istanza di BannerAdGameObject e caricarla come segue:

using UnityEngine;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class BannerTestScript : MonoBehaviour
{
    BannerAdGameObject bannerAd;

    void Start()
    {
        bannerAd = MobileAds.Instance
            .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

        bannerAd.LoadAd();
        ...
    }
    ...
}

Se esiste un BannerAdGameObject denominato BannerAd, puoi ottenerne un'istanza in questo modo:

MobileAds.Instance.GetAd<BannerAdGameObject>("BannerAd");

Accesso all'oggetto annuncio sottostante in AdGameObject

Questi snippet mostrano come accedere all'oggetto annuncio sottostante associato ad AdGameObject.

BannerAdGameObject bannerAd = MobileAds.Instance
    .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

// Access BannerView object
BannerView bannerView = bannerAd.BannerView;

Interstitial

InterstitialAdGameObject interstitialAdGameObject = MobileAds.Instance
    .GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

// Access InterstitialAd object
InterstitialAd interstitialAd = interstitialAdGameObject.InterstitialAd;

Con premio

RewardedAdGameObject rewardedAdGameObject = MobileAds.Instance
    .Get<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

// Access RewardedAd object
RewardedAd rewardedAd = rewardedAdGameObject.RewardedAd;

Esempi

Mostra un annuncio interstitial

Ecco un esempio di come configurare un gioco per il caricamento e la visualizzazione di un annuncio interstitial utilizzando un AdGameObject.

Aggiungi un InterstitialAdGameObject alla scena e attiva la funzionalità Caricamento automatico abilitato, in modo che l'annuncio venga caricato automaticamente al caricamento della scena.

Quindi, assicurati di aver inizializzato l'SDK utilizzando la procedura riportata di seguito. Tieni presente che la funzionalità Caricamento automatico in AdGameObject non funziona se dimentichi di inizializzare l'SDK.

Quindi, visualizza un annuncio interstitial tra una transizione dello schermo chiamando la funzione InterstitialAdGameObject.ShowIfLoaded(). Il seguente codice mostra un esempio di visualizzazione di un annuncio interstitial tra una transizione di scena.

using UnityEngine;
using UnityEngine.SceneManagement;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAd<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }

    public void OnClickShowGameSceneButton()
    {
        // Display an interstitial ad
        interstitialAd.ShowIfLoaded();

        // Load a scene named "GameScene"
        SceneManager.LoadScene("GameScene");
    }
}

Poiché hai attivato la funzione Caricamento automatico nel posizionamento dell'annuncio, non devi richiedere esplicitamente l'annuncio. Quando la scena cambia, se pronto viene visualizzato un annuncio interstitial.

Se vuoi richiedere manualmente un annuncio, disattiva la funzionalità Caricamento automatico dallo strumento di controllo dei posizionamenti degli annunci e chiama invece la funzione InterstitialAdGameObject.LoadAd(). Il seguente snippet di codice mostra come richiedere manualmente un annuncio.

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAdGameObject<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("MobileAds initialized");

            // Load an interstitial ad after the SDK initialization is complete
            interstitialAd.LoadAd();
        });
    }
    ...
}

Gestire lo stato del pulsante "Guarda un annuncio con premio"

Ecco un esempio di come attivare un pulsante "guarda un annuncio con premio" utilizzando i posizionamenti degli annunci.

Aggiungi alla scena un oggetto GameObject (chiamato Button in questo esempio) che verrà utilizzato per visualizzare un annuncio con premio. Il pulsante sarà reso disponibile solo quando sarà disponibile un annuncio con premio.

Nel metodo Start(), imposta lo stato attivo del pulsante su false. In questo modo il pulsante scomparirà dalla scena.

public class MainScene : MonoBehaviour
{
    ...
    void Start()
    {
        GameObject.Find("Button").SetActive(false);
        ...
    }
}

Aggiungi un RewardedAdGameObject alla scena e seleziona il posizionamento dell'annuncio Annuncio demo AdMob con premio dal menu a discesa.

Nella sezione Callback dello strumento di controllo RewardedAdGameObject, fai clic sul pulsante + in On Ad Loaded() per attivare la chiamata della funzione quando viene caricato un annuncio con premio.

Trascina il pulsante GameObject che hai aggiunto nel passaggio precedente nel campo Nessuno (Oggetto). Seleziona una funzione da chiamare dall'elenco a discesa. Fai clic su Nessuna funzione > GameObject > SetActive(bool), quindi fai clic sulla casella di controllo in modo che invii true come parametro (chiamate SetActive(true)).

In questa sezione dei callback, puoi anche collegare un evento che verrà richiamato quando viene attivato l'evento RewardedAd.OnUserEarnedReward. Per ulteriori dettagli, consulta questa sezione.

Attiva poi il pulsante per mostrare un annuncio con premio quando viene fatto clic. Dalla sezione Callback Al clic() nella finestra di controllo dei pulsanti, fai clic sul pulsante + e trascina il GameObject del posizionamento dell'annuncio con premio (in questo esempio, denominato Annuncio con premio) nel campo Nessuno (Oggetto).

Quindi, collega la funzione RewardedAdGameObject.ShowIfLoaded() al callback On Click() del pulsante.

Infine, non dimenticare di inizializzare l'SDK. Il seguente snippet di codice è il codice completo della scena utilizzata in questo esempio:

using UnityEngine;

using GoogleMobileAds.Api;

public class MainScene : MonoBehaviour
{
    void Start()
    {
        GameObject.Find("Button").SetActive(false);

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }
}

Una volta eseguito il progetto, il pulsante verrà visualizzato sulla scena quando un annuncio con premio viene caricato ed è pronto per essere mostrato.

Configura un callback di premio per un RewardAdGameObject

Ecco un esempio di come configurare un callback con premio in un posizionamento dell'annuncio con premio, in modo da offrire un premio a un utente quando viene richiamata una funzione di callback.

Crea un nuovo script e definisci una funzione che accetti Reward come parametro, come indicato di seguito.

using UnityEngine;
using GoogleMobileAds.Api;

class RewardedTestScript : MonoBehaviour {
    ...
    public void OnUserEarnedReward(Reward reward) {
        Debug.Log("OnUserEarnedReward: reward=" +
            reward.Type + ", amount=" + reward.Amount);
    }
    ...
}

Collega lo script RewardedTestScript a qualsiasi GameObject (tranne il GameObject di posizionamento dell'annuncio) nella scena. In questo esempio viene associato al GameObject della fotocamera principale.

Aggiungi RewardedAdGameObject alla scena. Quindi, nella sezione Callbacks nell'ispettore RewardedAdGameObject, fai clic sul pulsante + su On User Earned Reward (Reward) (Premio ottenuto dall'utente) per attivare la chiamata della funzione quando viene concesso un premio a un utente.

Trascina nel campo Nessuno (Oggetto) dell'oggetto GameObject della videocamera principale che hai aggiunto nel passaggio precedente. Seleziona una funzione da chiamare dal menu a discesa. Fai clic su Nessuna funzione > RewardedTestScript > OnUser EarnedReward.

Dopo aver eseguito il progetto e guardato un annuncio con premio, RewardedTestScript.OnUserEarnedReward() verrà richiamato quando riceverai un premio per aver interagito con l'annuncio.