---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ads.yandex.com/helpcenter/en/dev/unity/rewarded.md
  - https://ads.yandex.com/helpcenter/pt/dev/unity/rewarded.md
  - https://ads.yandex.com/helpcenter/ru/dev/unity/rewarded.md
  - https://ads.yandex.com/helpcenter/zh/dev/unity/rewarded.md
  - href: pt/dev/unity/rewarded.md
    type: text/markdown
    title: Markdown version
  - href: llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://ads.yandex.com/helpcenter/pt/llms.txt

# Anúncios Rewarded

<!-- source: pt/dev/_includes/rewarded.md -->
Rewarded ads are a popular full-screen ad format, where the user receives a reward for viewing the ad.
<!-- endsource: pt/dev/_includes/rewarded.md -->

<!-- source: pt/dev/_includes/rewarded.md -->
The display of this ad type is activated by the user, for instance, to receive a bonus or additional life in a game.
<!-- endsource: pt/dev/_includes/rewarded.md -->

<!-- source: pt/dev/_includes/rewarded.md -->
High user motivation makes this ad format the most popular and profitable in free apps.
<!-- endsource: pt/dev/_includes/rewarded.md -->

{% cut "Aparência" %}

{% list tabs %}

- Anúncios de texto e imagens

  <iframe width="200" height="405.5" allow="autoplay" src="https://runtime.strm.yandex.ru/player/video/vplvuz2wzki56mdfjs6p?autoplay=1&mute=0&loop=1" frameborder="0" allowfullscreen></iframe>

- Vídeo

  <iframe width="200" height="405.5" allow="autoplay" src="https://runtime.strm.yandex.ru/player/video/vplvo24yei75l2kxkuvj?autoplay=1&mute=0&loop=1" frameborder="0" allowfullscreen></iframe>

{% endlist %}

{% endcut %}

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 {#pre}

<!-- source: pt/dev/_includes/pre-unity.md -->
1. Siga o processo em [Início rápido](../../../en/dev/unity/quick-start.md) para integrar o plugin Yandex Mobile Ads Unity.
2. Confirme se você está utilizando a última versão do [plugin Yandex Mobile Ads Unity](../../../en/dev/platforms.md). Se você estiver usando mediação, confirme se também está utilizando a última versão da [compilação unificada](../../../en/dev/platforms.md).
<!-- endsource: pt/dev/_includes/pre-unity.md -->

## Implementação {#implement}

Principais passos para integrar anúncios Rewarded:

1. Criar um carregador de anúncios `RewardedAdLoader` e registrar listeners para eventos de carregamento de anúncios.
2. Definir os parâmetros de carregamento de anúncios em `AdRequestConfiguration`.
3. Carregar o anúncio usando o método  `RewardedAdLoader.LoadAd(AdRequestConfiguration)`.
4. Registrar listeners para eventos em que os usuários interagem com seu anúncio.
5. Mostrar o anúncio chamando o método  `RewardedAd.Show()`.
6. Liberar os recursos.

## Características da integração de anúncios Rewarded {#features}

1. 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.

2. 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

1. Crie um objeto `RewardedAdLoader` no script C# anexado a `GameObject`, depois registre listeners de eventos de carregamento de anúncios.

   ```c#
   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.
       }
   }
   ```

2. Configurar os parâmetros de carregamento de anúncios em `AdRequestConfiguration`.

   ```c#
   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.

   {% note tip %}

   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.

   {% endnote %}

3. Carregue o anúncio com o método `LoadAd`, passando `AdRequestConfiguration` como argumento.

   ```c#
   rewardedAdLoader.LoadAd(adRequestConfiguration);
   ```

4. Registrar listeners para eventos em que os usuários interagem com seu anúncio.

   ```c#
   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}.
   }
   ```

5. Mostre o anúncio chamando  `Show()` no objeto `RewardedAd`.

   ```c#
   private void ShowRewardedAd()
   {
       if (rewardedAd != null)
       {
           rewardedAd.Show();
       }
   }
   ```

6. 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.

   ```c#
   public void DestroyRewardedAd()
   {
       if (rewardedAd != null)
       {
           rewardedAd.Destroy();
           rewardedAd = null;
       }
   }
   ```

## Teste da integração de anúncios Rewarded {#test}

{% list tabs %}

- Android

   <!-- source: pt/dev/_includes/test-android-rewarded.md -->
   ### Uso de blocos de anúncios de demonstração para teste de anúncios {#demo-blocks}

   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`.

   {% note warning %}

   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.

   {% endnote %}

   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](../../../en/dev/android/demo-blocks.md).

   ### Teste da integração de anúncios {#test-int}

   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](https://developer.android.com/studio/command-line/logcat) usada para depuração de aplicativos Android.

   ```bash
   adb logcat -v brief '*:S YandexAds'
   ```

   Se a integração for bem-sucedida, você verá esta mensagem:

   ```bash
   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.
   <!-- endsource: pt/dev/_includes/test-android-rewarded.md -->

- iOS

   ### Uso de blocos de anúncios de demonstração para teste de anúncios

   <!-- source: pt/dev/_includes/test-ios-rewarded.md -->
   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`.

   {% note warning %}

   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.

   {% endnote %}

   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](../../../en/dev/ios/demo-blocks.md).
   <!-- endsource: pt/dev/_includes/test-ios-rewarded.md -->

   ### Teste da integração de anúncios

   <!-- source: pt/dev/_includes/test-integration-ios.md -->
   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`.

   ```swift
   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.

   <img src= "https://yastatic.net/s3/doc-binary/src/dev/mobile-ads/common/integration-ios-2.png">
   <!-- endsource: pt/dev/_includes/test-integration-ios.md -->

{% endlist %}

## Dicas

### Pré-carregamento de anúncios

<!-- source: pt/dev/_includes/preload.md -->
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.
<!-- endsource: pt/dev/_includes/preload.md -->

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.

```c#
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:

```c#
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();
}
```

<!-- source: pt/dev/_includes/cash-ads.md -->
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.
<!-- endsource: pt/dev/_includes/cash-ads.md -->

### Exemplo de código completo

```c#
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 {#resources}

* <!-- source: pt/dev/_includes/github-pubdev-links.md -->
  Link para [GitHub](https://github.com/yandexmobile/yandex-ads-unity-plugin).
  <!-- endsource: pt/dev/_includes/github-pubdev-links.md -->
