Anúncios Rewarded
Rewarded ads are a popular full-screen ad format, where the user receives a reward for viewing the ad.
The display of this ad type is activated by the user, for instance, to receive a bonus or additional life in a game.
High user motivation makes this ad format the most popular and profitable in free apps.
Aparência
Este guia mostrará como integrar anúncios Rewarded em aplicativos Unity. Além de exemplos de código e instruções, contém recomendações específicas aos formatos e links para recursos adicionais.
Pré-requisito
- Siga o processo em Início rápido para integrar o plugin Yandex Mobile Ads Unity.
- Confirme se você está utilizando a última versão do plugin Yandex Mobile Ads Unity. Se você estiver usando mediação, confirme se também está utilizando a última versão da compilação unificada.
Implementação
Principais passos para integrar anúncios Rewarded:
- Criar um carregador de anúncios
RewardedAdLoader
e registrar listeners para eventos de carregamento de anúncios. - Definir os parâmetros de carregamento de anúncios em
AdRequestConfiguration
. - Carregar o anúncio usando o método
RewardedAdLoader.LoadAd(AdRequestConfiguration)
. - Registrar listeners para eventos em que os usuários interagem com seu anúncio.
- Mostrar o anúncio chamando o método
RewardedAd.Show()
. - Liberar os recursos.
Características da integração de anúncios Rewarded
-
Se houve um erro no evento
onAdFailedToLoad
, não tente carregar um novo anúncio novamente. Se não houver outra opção, limite o número de tentativas de carregamento de anúncios. Isso ajudará a evitar solicitações constantes malsucedidas e problemas de conexão quando surgirem limitações. -
Recomendamos usar uma única instância de
RewardedAdLoader
para todos os carregamentos de anúncios a fim de melhorar o desempenho.
Guia passo a passo
-
Crie um objeto
RewardedAdLoader
no script C# anexado aGameObject
, depois registre listeners de eventos de carregamento de anúncios.using UnityEngine; using YandexMobileAds; using YandexMobileAds.Base; public class YandexMobileAdsRewardedAdDemoScript : MonoBehaviour { private RewardedAdLoader rewardedAdLoader; private RewardedAd rewardedAd; private void SetupLoader() { rewardedAdLoader = new RewardedAdLoader(); rewardedAdLoader.OnAdLoaded += HandleAdLoaded; rewardedAdLoader.OnAdFailedToLoad += HandleAdFailedToLoad; // ... } public void HandleAdLoaded(object sender, RewardedAdLoadedEventArgs args) { // Rewarded ad was loaded successfully. Now you can handle it. rewardedAd = args.RewardedAd; } public void HandleAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) { // Ad {args.AdUnitId} failed for to load with {args.Message} // Attempting to load new ad from the OnAdFailedToLoad event is strongly discouraged. } }
-
Configurar os parâmetros de carregamento de anúncios em
AdRequestConfiguration
.string adUnitId = "demo-rewarded-yandex"; // replace with "R-M-XXXXXX-Y" AdRequestConfiguration adRequestConfiguration = new AdRequestConfiguration.Builder(adUnitId).Build();
AdUnitId
: identificador único emitido na interface do Yandex Advertising Network, com o seguinte aspecto: R-M-XXXXXX-Y.Sugestão
Para fins de teste, você pode usar o ID do bloco de demonstração: "demo-rewarded-yandex". Antes de publicar o anúncio, você precisa substituir o ID do bloco de demonstração por um ID de bloco de anúncios real.
Você pode expandir os parâmetros de solicitação de anúncio através de
AdRequestConfiguration.Builder
passando interesses do usuário, dados contextuais do aplicativo, detalhes de localização ou outros dados. Fornecer dados contextuais adicionais na solicitação pode melhorar consideravelmente a qualidade do anúncio. -
Carregue o anúncio com o método
LoadAd
, passandoAdRequestConfiguration
como argumento.rewardedAdLoader.LoadAd(adRequestConfiguration);
-
Registrar listeners para eventos em que os usuários interagem com seu anúncio.
using System; // ... rewardedAd.OnAdClicked += HandleAdClicked; rewardedAd.OnAdShown += HandleAdShown; rewardedAd.OnAdFailedToShow += HandleAdFailedToShow; rewardedAd.OnAdImpression += HandleImpression; rewardedAd.OnAdDismissed += HandleAdDismissed; rewardedAd.OnRewarded += HandleRewarded; // ... public void HandleAdClicked(object sender, EventArgs args) { // Called when a click is recorded for rewarded ad. } public void HandleAdShown(object sender, EventArgs args) { // Called when an ad is shown. } public void HandleAdFailedToShow(object sender, AdFailureEventArgs args) { // Called when an ad failed to show. } public void HandleAdDismissed(object sender, EventArgs args) { // Called when an ad is dismissed. } public void HandleImpression(object sender, ImpressionData impressionData) { // Called when an impression is recorded for an ad. } public void HandleRewarded(object sender, Reward args) { // Called when the user can be rewarded with {args.type} and {args.amount}. }
-
Mostre o anúncio chamando
Show()
no objetoRewardedAd
.private void ShowRewardedAd() { if (rewardedAd != null) { rewardedAd.Show(); } }
-
Chame
Destroy()
em anúncios que são exibidos e elimine links que não são mais usados na tela atual.Isso libera os recursos e evita vazamentos de memória.
public void DestroyRewardedAd() { if (rewardedAd != null) { rewardedAd.Destroy(); rewardedAd = null; } }
Teste da integração de anúncios Rewarded
Uso de blocos de anúncios de demonstração para teste de anúncios
Recomendamos usar anúncios de teste para testar sua integração de anúncios Rewarded e seu próprio aplicativo.
Para garantir que anúncios de teste sejam retornados para cada solicitação de anúncio, criamos um ID especial de posicionamento de anúncios de demonstração. Use-o para verificar sua integração de anúncios.
adUnitId de demonstração: demo-rewarded-yandex
.
Importante
Antes de publicar seu app na loja, lembre-se de substituir a ID de inserção demonstrativa por uma ID real obtida na interface do Yandex Advertising Network.
Confira a lista de IDs de posicionamento de anúncios de demonstração disponíveis na seção Blocos de anúncio de demonstração para teste.
Teste da integração de anúncios
Você pode testar sua integração de anúncios Rewarded usando o analisador integrado do SDK.
A ferramenta garante que seus anúncios Rewarded estejam integrados corretamente e gera um relatório detalhado no log. Para ver o relatório, procure a palavra-chave "YandexAds" na ferramenta Logcat usada para depuração de aplicativos Android.
adb logcat -v brief '*:S YandexAds'
Se a integração for bem-sucedida, você verá esta mensagem:
adb logcat -v brief '*:S YandexAds'
mobileads$ adb logcat -v brief '*:S YandexAds'
I/YandexAds(13719): [Integration] Ad type rewarded was integrated successfully
Se você estiver tendo problemas para integrar anúncios Rewarded, receberá um relatório detalhado sobre os problemas e recomendações de como corrigi-los.
Uso de blocos de anúncios de demonstração para teste de anúncios
Recomendamos usar anúncios de teste para testar sua integração de anúncios e seu próprio aplicativo.
Para garantir que anúncios de teste sejam retornados para cada solicitação de anúncio, criamos um ID especial de posicionamento de anúncios de demonstração. Use-o para verificar sua integração de anúncios.
adUnitId de demonstração: demo-rewarded-yandex
.
Importante
Antes de publicar seu app na loja, lembre-se de substituir a ID de inserção demonstrativa por uma ID real obtida na interface do Yandex Advertising Network.
Confira a lista de IDs de posicionamento de anúncios de demonstração disponíveis na seção Blocos de anúncio de demonstração para teste.
Teste da integração de anúncios
Você pode testar sua integração de anúncios usando a ferramenta Console nativa.
Para ver logs detalhados, chame o método enableLogging
da classe YMAMobileAds
.
YMAMobileAds.enableLogging()
Para ver os logs do SDK, acesse a ferramenta Console e defina Subsystem = com.mobile.ads.ads.sdk
. Você também pode filtrar logs por categoria e nível de erro.
Se você estiver tendo problemas para integrar anúncios, receberá um relatório detalhado sobre os problemas e recomendações de como corrigi-los.

Dicas
Pré-carregamento de anúncios
Carregar um anúncio pode levar vários segundos, dependendo do número de redes de anúncios conectadas na mediação móvel e da velocidade da Internet do usuário. Recomendamos pré-carregar os anúncios antes de exibi-los.
Você pode chamar o carregamento de anúncios no método Awake
para gameObject
. Você precisa preservar o objeto entre as cenas usando a chamada DontDestroyOnLoad()
. Isso garante que o anúncio carregado não seja excluído junto com o gameObject
na mudança de cena.
private void Awake()
{
SetupLoader();
RequestRewardedAd();
DontDestroyOnLoad(gameObject);
}
Além disso, você pode vincular o carregamento do próximo anúncio às funções de callback executadas quando a exibição do anúncio é concluída ou falha. Por exemplo:
public void HandleAdFailedToShow(object sender, EventArgs args)
{
// Called when an ad failed to show.
// Clear resources after an ad dismissed.
DestroyRewardedAd();
// Now you can preload the next rewarded ad.
RequestRewardedAd();
}
public void HandleAdDismissed(object sender, EventArgs args)
{
// Called when an ad is dismissed.
// Clear resources after an ad dismissed.
DestroyRewardedAd();
// Now you can preload the next rewarded ad.
RequestRewardedAd();
}
Se você armazenar em cache anúncios em muitas telas que provavelmente não serão exibidas, a eficácia do anúncio pode diminuir. Por exemplo, se os usuários completam 2–3 níveis de jogo por sessão, você não deve armazenar em cache anúncios para 6–7 telas. Caso contrário, a visualizabilidade do seu anúncio pode diminuir, e o sistema de publicidade pode despriorizar seu aplicativo.
Para garantir que você esteja alcançando um bom equilíbrio para o seu app, acompanhe a métrica "Parcela de impressões" ou "Parcela de impressões visíveis" na interface do Yandex Advertising Network. Se ela estiver abaixo de 20%, talvez seja uma boa ideia revisar seu algoritmo de cache. Quanto maior o percentual de impressões, melhor.
Exemplo de código completo
using System;
using UnityEngine;
using UnityEngine.UI;
using YandexMobileAds;
using YandexMobileAds.Base;
public class YandexMobileAdsRewardedAdDemoScript : MonoBehaviour
{
private RewardedAdLoader rewardedAdLoader;
private RewardedAd rewardedAd;
[SerializeField] private Button button;
private void Awake()
{
SetupLoader();
RequestRewardedAd();
DontDestroyOnLoad(gameObject);
button = this.GetComponent<Button>();
button.onClick.AddListener(ShowRewardedAd);
}
private void SetupLoader()
{
rewardedAdLoader = new RewardedAdLoader();
rewardedAdLoader.OnAdLoaded += HandleAdLoaded;
rewardedAdLoader.OnAdFailedToLoad += HandleAdFailedToLoad;
}
private void RequestRewardedAd()
{
string adUnitId = "demo-rewarded-yandex"; // replace with "R-M-XXXXXX-Y"
AdRequestConfiguration adRequestConfiguration = new AdRequestConfiguration.Builder(adUnitId).Build();
rewardedAdLoader.LoadAd(adRequestConfiguration);
}
private void ShowRewardedAd()
{
if (rewardedAd != null)
{
rewardedAd.Show();
}
}
public void HandleAdLoaded(object sender, RewardedAdLoadedEventArgs args)
{
// The ad was loaded successfully. Now you can handle it.
rewardedAd = args.RewardedAd;
// Add events handlers for ad actions
rewardedAd.OnAdClicked += HandleAdClicked;
rewardedAd.OnAdShown += HandleAdShown;
rewardedAd.OnAdFailedToShow += HandleAdFailedToShow;
rewardedAd.OnAdImpression += HandleImpression;
rewardedAd.OnAdDismissed += HandleAdDismissed;
rewardedAd.OnRewarded += HandleRewarded;
}
public void HandleAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
// Ad {args.AdUnitId} failed for to load with {args.Message}
// Attempting to load a new ad from the OnAdFailedToLoad event is strongly discouraged.
}
public void HandleAdDismissed(object sender, EventArgs args)
{
// Called when an ad is dismissed.
// Clear resources after an ad dismissed.
DestroyRewardedAd();
// Now you can preload the next rewarded ad.
RequestRewardedAd();
}
public void HandleAdFailedToShow(object sender, AdFailureEventArgs args)
{
// Called when rewarded ad failed to show.
// Clear resources after an ad dismissed.
DestroyRewardedAd();
// Now you can preload the next rewarded ad.
RequestRewardedAd();
}
public void HandleAdClicked(object sender, EventArgs args)
{
// Called when a click is recorded for an ad.
}
public void HandleAdShown(object sender, EventArgs args)
{
// Called when an ad is shown.
}
public void HandleImpression(object sender, ImpressionData impressionData)
{
// Called when an impression is recorded for an ad.
}
public void HandleRewarded(object sender, Reward args)
{
// Called when the user can be rewarded with {args.type} and {args.amount}.
}
public void DestroyRewardedAd()
{
if (rewardedAd != null)
{
rewardedAd.Destroy();
rewardedAd = null;
}
}
}
Recursos adicionais
-
Link para GitHub.