Questa guida illustra come utilizzare il componente aggiuntivo degli annunci nativi per implementare gli annunci nativi annunci in un'app Unity, oltre ad alcuni aspetti importanti da considerare durante il processo.
Gli annunci nativi corrispondono sia alla forma che alla funzione dell'esperienza utente in cui vengono posizionati. Inoltre, si adattano alla grafica dell'app in cui si trovano. Il formato di annunci nativi di Ad Manager consente ai publisher di eseguire il rendering di annunci che senza interruzioni con i contenuti. Puoi usare questa tecnologia per implementare che sfruttano al meglio 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 alla grafica
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, li visualizza.
Prerequisiti
- Plug-in Unity di Google Mobile Ads versione 7.0.0 o successiva.
- Completa la Guida introduttiva.
- Scarica e installare il componente aggiuntivo per gli annunci nativi.
Carica 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. Il metodo ForNativeAd()
configura AdLoader per gestire gli 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. È necessario disporre di un delegato per questo evento per accedere all'annuncio caricato.
OnAdFailedToLoad
Richiamato quando non è possibile 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
che è
configurato per richiedere annunci nativi, imposta delegati per annunci riusciti e non riusciti
viene caricato 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 è riportata l'analisi del motivo di un errore di caricamento degli annunci di 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);
}
Visualizzare un annuncio nativo
Quando viene caricato un annuncio nativo, viene richiamato l'evento dell'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 degli annunci nativi
Una volta caricati gli annunci, potrai 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 è possibile accedere agli asset annuncio solo nel thread principale, ad esempio
dal metodo Update()
di uno script Unity. Inoltre, tieni presente che le seguenti risorse
non sempre è garantita e deve essere verificata prima di essere
visualizzato:
GetStarRating()
GetStore()
GetPrice()
GetAdvertiser()
GetIconTexture()
Asset Scegli Tu!
È obbligatorio mostrare l'asset annuncio AdChoices 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 asset annuncio
Devi registrare il GameObject
per visualizzare l'asset annuncio nel tuo
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 numero di GameObject
registrati correttamente.
Se la registrazione di un asset annuncio non va a buon fine, le impressioni e i clic sulla non verrà riconosciuto l'annuncio nativo corrispondente.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
Il GameObject
registrato per un asset annuncio deve avere un Collider convesso
componente che rappresenta la dimensione e la forma dell'elemento 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 collegato il BoxCollider
al GameObject
, verrà ridimensionato automaticamente per adattarsi al 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;
}