Questa guida mostra come utilizzare la funzionalità Posizionamenti annunci del plug-in Google Mobile Ads Unity per creare e visualizzare gli annunci per la tua app.
Prerequisiti
Unity 2017.4 o versioni successive.
Scarica e importa la build iniziale del plug-in GMA Unity.
Imposta l'ID app AdMob in Unity Editor.
Inizializza l'SDK Google Mobile Ads
Prima di caricare gli annunci, inizializza l'SDK Google Mobile Ads chiamando
MobileAds.Initialize()
, con un callback Action<InitializationStatus>
. Questa operazione
deve essere eseguita una sola volta, idealmente all'avvio dell'app.
using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
...
public void Start()
{
// Initialize Google Mobile Ads SDK.
MobileAds.Initialize((initStatus) =>
{
// SDK initialization is complete
});
...
}
}
Creare posizionamenti dell'annuncio
Il primo passaggio per visualizzare un banner con Google Mobile Ads consiste nel creare e configurare un posizionamento dell'annuncio. Puoi selezionare un posizionamento dell'annuncio di tipo banner, interstitial o con premio da Asset > Google Mobile Ads > Posizionamenti annunci in Unity Editor. Vengono quindi configurati tre posizionamenti degli annunci demo 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 visualizzazione Inspector.
Configurazione del posizionamento dell'annuncio
Ogni posizionamento ha le seguenti proprietà:
- Nome posizionamento
- Nome del posizionamento. Utilizzato per identificare i posizionamenti durante la configurazione degli annunci in una scena.
- Formato dell'annuncio
- Banner, con premio, interstitial. Tipo di annuncio.
- ID unità pubblicitaria
- Fornisci l'ID unità pubblicitaria banner per Android e iOS. Devi fornire almeno un ID unità pubblicitaria.
- Persistente tra le scene
- Se selezionato, il banner rimane sullo schermo indipendentemente dai cambi di scena (stesso comportamento di
DontDestroyOnLoad
). - Caricamento automatico attivato
- Se selezionata, un annuncio verrà caricato automaticamente quando viene caricata una scena associata al posizionamento dell'annuncio.
Lo screenshot seguente mostra un esempio di posizionamento dell'annuncio denominato Il mio fantastico banner.
Aggiunta di un AdGameObject alla scena
Puoi aggiungere un AdGameObject per i formati banner, interstitial o con premio alla tua scena utilizzando GameObject > Google Mobile Ads in Unity Editor. 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 di Unity Editor.
Puoi modificare il nome del posizionamento modificando il nome dell'oggetto GameObject. Lo screenshot seguente mostra un esempio di 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 le unità pubblicitarie per il formato corretto. Ad esempio, per gli oggetti di gioco annuncio banner, il menu a discesa mostrerà solo i posizionamenti degli annunci banner configurati.
- Configurazione di
BannerAdGameObject
(solo banner)
- Dimensioni: seleziona le dimensioni del banner che vuoi utilizzare.
- Il banner adattivo ancorato offre alcune opzioni aggiuntive:
- Orientamento: seleziona l'orientamento del dispositivo utilizzato per calcolare l'altezza dell'annuncio.
- Utilizza la larghezza a schermo intero: se questa opzione è selezionata, il banner occuperà l'intera larghezza dello schermo. Puoi regolare la percentuale di larghezza dello schermo (50-99%) se deselezioni l'opzione Usa larghezza schermo intero.
- Personalizzato ti consente di specificare la larghezza e l'altezza del banner.
- Il banner adattivo ancorato offre alcune opzioni aggiuntive:
- Posizione annuncio: seleziona la posizione in cui deve essere posizionato il banner.
Callback
Puoi implementare funzioni che corrispondono ai callback degli annunci. Ad esempio, se vuoi gestire il caso in cui un annuncio banner non viene caricato:
Crea una funzione compatibile con il callback dell'annuncio.
public void OnBannerAdFailedToLoad(string reason) { Debug.Log("Banner ad failed to load: " + reason); }
Allega lo script che contiene la funzione precedente a qualsiasi GameObject nella scena.
Fai clic sul pulsante + e poi trascina il GameObject a cui hai allegato lo script.
Seleziona la funzione che vuoi collegare al callback dell'annuncio. Per i callback degli annunci con parametri, seleziona la funzione per accettare la variabile dinamica in modo da poter ottenere il valore del parametro dall'SDK.
Utilizzare AdGameObject dallo script
Ottieni l'istanza AdGameObject dallo script
Tutti gli oggetti AdGameObject
hanno il metodo pratico LoadAd()
. Verrà caricato
un annuncio con un AdRequest
semplice e non mirato. Per applicare il targeting, devi utilizzare
LoadAd(AdRequest adRequest)
utilizzando la tua richiesta di annuncio configurata.
Per ottenere l'istanza di un AdGameObject, utilizza il seguente metodo per ogni formato:
Banner
MobileAds.Instance.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");
L'oggetto BannerAdGameObject
restituito dispone anche dei metodi pratici
Hide()
e Show()
.
Interstitial
MobileAds.Instance.GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");
L'oggetto InterstitialAdGameObject
restituito ha un metodo pratico
ShowIfLoaded()
.
Con premio
MobileAds.Instance.GetAd<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");
L'oggetto RewardedAdGameObject
restituito ha un metodo pratico
ShowIfLoaded()
.
Ad esempio, puoi ottenere un'istanza di un 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 ottenere un'istanza
come segue:
MobileAds.Instance.GetAd<BannerAdGameObject>("BannerAd");
Accedere all'oggetto annuncio sottostante in AdGameObject
Questi snippet mostrano come accedere all'oggetto annuncio sottostante associato a AdGameObject.
Banner
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
Mostrare un annuncio interstitial
Ecco un esempio di come configurare un gioco per caricare e mostrare un annuncio interstitial utilizzando un AdGameObject.
Aggiungi un InterstitialAdGameObject
alla scena e attiva la funzionalità Caricamento automatico
attivato, in modo che l'annuncio venga caricato automaticamente al caricamento della scena.
Successivamente, assicurati di aver inizializzato l'SDK nel seguente modo. Tieni presente che la funzionalità Caricamento automatico in AdGameObject non funzionerà se dimentichi di inizializzare l'SDK.
Quindi, visualizza un annuncio interstitial tra una transizione di schermata chiamando la funzione
InterstitialAdGameObject.ShowIfLoaded()
. Il seguente codice mostra un
esempio di visualizzazione di un annuncio interstitial durante la transizione tra scene.
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 funzionalità Caricamento automatico nel posizionamento dell'annuncio, non devi richiedere un annuncio in modo esplicito. Quando la scena cambia, viene visualizzato un annuncio interstitial, se disponibile.
Se vuoi richiedere manualmente un annuncio, disattiva la funzionalità Caricamento automatico
dall'inspector dei posizionamenti degli annunci e chiama 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 GameObject Button (denominato Button in questo esempio), che verrà utilizzato per visualizzare un annuncio con premio. Renderemo disponibile questo pulsante solo quando è disponibile un annuncio con premio.
Nel metodo Start()
, imposta lo stato attivo del pulsante su false
. In questo modo il pulsante non sarà più visibile nella scena.
public class MainScene : MonoBehaviour
{
...
void Start()
{
GameObject.Find("Button").SetActive(false);
...
}
}
Aggiungi un RewardedAdGameObject
alla scena e seleziona il posizionamento dell'annuncio AdMob Demo Rewarded
Ad dal menu a discesa.
Nella sezione Callback dell'inspector RewardedAdGameObject
, fai clic sul pulsante + in On Ad Loaded() per attivare la chiamata della funzione quando viene caricato un annuncio con premio.
Trascina il GameObject Button che hai aggiunto nel passaggio precedente nel campo Nessuno (oggetto). Seleziona una funzione da chiamare dal menu a discesa.
Fai clic su Nessuna funzione > GameObject > SetActive(bool), quindi fai clic sulla casella di controllo in modo che
venga inviato true
come parametro (viene chiamato SetActive(true)
).
In questa sezione Callbacks, puoi anche collegare un evento che verrà chiamato
quando viene attivato l'evento RewardedAd.OnUserEarnedReward
. Per maggiori dettagli,
consulta questa sezione.
A questo punto, crea il pulsante per visualizzare un annuncio con premio quando viene fatto clic. Nella sezione On Click() Callbacks (Callback OnClick()) dell'inspector del pulsante, fai clic sul pulsante + e trascina il GameObject del posizionamento dell'annuncio con premio (denominato Rewarded Ad in questo esempio) nel campo None (Object).
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, vedrai il pulsante visualizzato nella scena quando un annuncio con premio viene caricato ed è pronto per essere mostrato.
Configurare un callback del premio per un oggetto RewardedAdGameObject
Ecco un esempio di come configurare un callback con premio per un posizionamento di annunci con premio, in modo da poter dare un premio a un utente quando viene chiamata una funzione di callback.
Crea un nuovo script e definisci una funzione che accetti Reward
come parametro
nel seguente modo.
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 (ad eccezione di GameObject Ad
Placement) nella scena. In questo esempio, è collegato all'oggetto GameObject Main
Camera.
Aggiungi un RewardedAdGameObject
alla scena. Poi, nella sezione Callback
dell'inspector RewardedAdGameObject
, fai clic sul pulsante + in On User
Earned Reward (Reward) per attivare la chiamata della funzione quando viene
concesso un premio a un utente.
Trascina il GameObject della videocamera principale che hai aggiunto nel passaggio precedente nel campo Nessuno (oggetto). Seleziona una funzione da chiamare dal menu a discesa. Fai clic su Nessuna funzione > RewardedTestScript > OnUserEarnedReward.
Una volta eseguito il progetto e visualizzato un annuncio con premio,
RewardedTestScript.OnUserEarnedReward()
verrà richiamato quando riceverai
il premio per l'interazione con l'annuncio.