Questa guida spiega come utilizzare la funzionalità Posizionamenti degli annunci del plug-in Unity di Google Mobile Ads per creare e visualizzare gli annunci per la tua app.
Prerequisiti
Unity 2017.4 o versioni successive.
Scarica e importa la build in anteprima del plug-in GMA Unity.
Imposta l'ID app AdMob nell'editor di Unity.
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
Il primo passaggio della visualizzazione di un banner con gli annunci per dispositivi mobili di Google consiste nel creare e configurare un posizionamento dell'annuncio. Puoi selezionare un posizionamento dell'annuncio in formato banner, interstitial o con premio da Asset > Google Mobile Ads > Posizionamenti nell'editor di Unity. A questo punto, vengono impostati tre posizionamenti degli annunci dimostrativi e 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 degli annunci dalla visualizzazione di controllo.
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. Il tipo di annuncio.
- ID unità pubblicitaria
- Fornisci l'ID unità pubblicitaria banner per Android e iOS. Devi fornire almeno un ID unità pubblicitaria.
- Permanente tra le scene
- Se selezioni questa opzione, il banner rimarrà sullo schermo indipendentemente dai cambi di scena (stesso comportamento di
DontDestroyOnLoad
). - Caricamento automatico attivato
- Quando questa opzione è selezionata, un annuncio viene caricato automaticamente quando viene caricata una scena associata al posizionamento.
Il seguente screenshot mostra un esempio di posizionamento dell'annuncio denominato My Awesome Banner.
Aggiunta di un AdGameObject alla scena
Puoi aggiungere alla tua scena un formato AdGameObject per banner, interstitial o con premio 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.
È possibile modificare il nome del posizionamento modificando il nome stesso del GameObject. Il seguente screenshot mostra un esempio di annuncio AdGameObject denominato Banner Ad.
Impostazioni AdGameObject
Puoi configurare AdGameObject nella scena dalla visualizzazione di Controllo nelle impostazioni del componente Ad Game Object (Script).
- Posizionamento
Seleziona il posizionamento dall'elenco a discesa dei posizionamenti configurati. L'elenco conterrà solo unità pubblicitarie per il formato giusto. Ad esempio, per gli oggetti gioco di annunci banner, il menu a discesa mostrerà solo i posizionamenti di annunci banner configurati.
- Configurazione
BannerAdGameObject
(solo banner)
- Dimensioni: seleziona le dimensioni del banner che vuoi utilizzare.
- Il banner adattivo ancorato fornisce alcune altre opzioni:
- Orientamento: seleziona l'orientamento del dispositivo utilizzato per calcolare l'altezza dell'annuncio.
- Usa larghezza intera: se questa opzione è selezionata, il banner occupa tutta la larghezza dello schermo. Puoi regolare la % della larghezza dello schermo (50~99%) se deselezioni l'opzione Usa larghezza schermo intero.
- L'opzione Personalizzato ti consente di indicare la larghezza e l'altezza del banner.
- Il banner adattivo ancorato fornisce alcune altre opzioni:
- 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 i casi in cui un annuncio banner non viene caricato:
Creare 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 riportata sopra a GameObject nella scena.
Fai clic sul pulsante +, quindi trascina il GameObject a cui hai allegato lo script.
Seleziona la funzione da collegare al callback annuncio. Per i callback degli annunci parametrizzati, seleziona la funzione per accettare la variabile dinamica, in modo da ottenere il valore del parametro dall'SDK.
Usa AdGameObject dallo script
Recupera l'istanza AdGameObject dallo script
Tutti gli oggetti AdGameObject
hanno il metodo LoadAd()
. In questo modo verrà caricato un annuncio con AdRequest
semplice e senza targeting. Per applicare il targeting, devi utilizzare LoadAd(AdRequest adRequest)
utilizzando la tua richiesta di annuncio configurata.
Per ottenere l'istanza di un AdGameObject, usa il seguente metodo per ogni formato:
Banner
MobileAds.Instance.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");
L'oggetto BannerAdGameObject
restituito ha anche metodi di convenienza
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 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 è presente un BannerAdGameObject
denominato BannerAd, puoi ottenere un'istanza simile alla seguente:
MobileAds.Instance.GetAd<BannerAdGameObject>("BannerAd");
Accedere all'oggetto annuncio sottostante in AdGameObject
Questi snippet mostrano come accedere all'oggetto annuncio sottostante associato all'oggetto 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
Mostra un annuncio interstitial
Ecco un esempio di come configurare un gioco per caricare e mostrare un annuncio interstitial utilizzando AdGameObject.
Aggiungi un elemento InterstitialAdGameObject
alla scena e attiva la funzionalità Caricamento automatico
attiva, in modo che l'annuncio venga caricato automaticamente al caricamento della scena.
A questo punto, assicurati di aver inizializzato l'SDK nel seguente modo. Tieni presente che la funzionalità Caricamento automatico in AdGameObject non funziona se dimentichi l'inizializzazione dell'SDK.
Quindi, mostra un annuncio interstitial tra una transizione di schermata e l'altra chiamando la funzione InterstitialAdGameObject.ShowIfLoaded()
. Il codice seguente mostra un esempio di visualizzazione di un annuncio interstitial tra una transizione di scena e un'altra.
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, non devi richiedere esplicitamente un annuncio. Quando la scena cambia, viene visualizzato un annuncio interstitial se ne è pronto uno.
Se vuoi richiedere manualmente un annuncio, disattiva la funzionalità Caricamento automatico dallo strumento di controllo dei posizionamenti 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.
Aggiungi alla scena un GameObject pulsante (denominato Button), che verrà utilizzato per visualizzare un annuncio con premio. Renderemo questo pulsante disponibile solo quando sarà disponibile un annuncio con premio.
Nel metodo Start()
, modifica lo stato attivo del pulsante in false
. In questo modo il pulsante scomparirà dalla scena.
public class MainScene : MonoBehaviour
{
...
void Start()
{
GameObject.Find("Button").SetActive(false);
...
}
}
Aggiungi un elemento RewardedAdGameObject
alla scena e seleziona il posizionamento dell'annuncio demo con premio di AdMob dal menu a discesa.
Nella sezione Callback dello strumento di controllo RewardedAdGameObject
, fai clic sul pulsante + da On Ad Loaded() per attivare la funzione quando viene caricato un annuncio con premio.
Trascina il pulsante GameObject aggiunto nel passaggio precedente nel campo None (Object). Seleziona una funzione da chiamare dal menu a discesa.
Fai clic su Nessuna funzione > GameObject > SetActive(bool), poi fai clic sulla casella di controllo in modo che invii true
come parametro (chiamate SetActive(true)
).
In questa sezione, puoi anche collegare un evento che verrà richiamato
quando viene attivato l'evento RewardedAd.OnUserEarnedReward
. Per ulteriori dettagli, consulta questa sezione.
Quindi, fai clic sul pulsante per visualizzare un annuncio con premio quando viene selezionato. Nella sezione Callback su Click() dello strumento di controllo dei pulsanti, fai clic sul pulsante + e trascina il GameObject del posizionamento dell'annuncio con premio (denominato Annuncio con premio in questo esempio) nel campo Nessuno (Oggetto).
Associa quindi 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 per la 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 e pronto per essere mostrato.
Configurare il callback di un premio per RewardedAdGameObject
Di seguito è riportato un esempio di come configurare un callback con premio per un posizionamento con premio, in modo da poter offrire 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);
}
...
}
Associa lo script RewardedTestScript
a qualsiasi GameObject (tranne il GameObject del posizionamento dell'annuncio) nella scena. In questo esempio, è collegato all'oggetto
GameObject della fotocamera principale.
Aggiungi un elemento RewardedAdGameObject
alla scena. Quindi, nella sezione Callback dello strumento di controllo RewardedAdGameObject
, fai clic sul pulsante + in On User
Earned Reward (Premi) per attivare la funzione quando viene assegnato un premio a un utente.
Trascina il campo GameObject della fotocamera principale che hai aggiunto nel passaggio precedente nel campo None (Object). Seleziona una funzione da chiamare dal menu a discesa. Fai clic su Nessuna funzione > RewardedTestScript > OnUserEarnedReward.
Dopo aver eseguito il progetto e aver guardato un annuncio con premio, RewardedTestScript.OnUserEarnedReward()
verrà richiamato quando dovrai ricevere un premio per poter interagire con l'annuncio.