Anúncios premiados
Anúncios com recompensa são um formato de anúncio em tela cheia de grande popularidade, no qual os usuários recebem incentivos para assistir aos anúncios.
As impressões dos anúncios são opcionais: os usuários podem iniciá-las, por exemplo, para receber um bônus ou vidas extras em um jogo.
A forte motivação para os usuários faz com que esse formato de anúncio seja o mais popular e lucrativo em aplicativos gratuitos.
Aparência
Este guia mostrará como integrar anúncios premiados em aplicativos Android. 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 os passos de integração do SDK descritos em Início rápido.
- Primeiro, é preciso inicializar o SDK de publicidade.
- Certifique-se de possuir a última Yandex Mobile Ads SDK versão. Se estiver usando mediação, atualize para a single build mais recente.
Implementação
Principais passos para integrar anúncios premiados:
- Crie e configure um
RewardedAdLoader. - Registrar o listener para métodos de callback de carregamento de anúncios:
RewardedAdLoadListener. - Carregar o anúncio.
- Registrar o listener
RewardedAdEventListenerpara métodos de callback de eventos de anúncios. - Exiba o objeto
RewardedAd. - Premiar o usuário por visualizar o anúncio.
Características da integração de anúncios premiados
-
Todas as chamadas para métodos do Yandex Mobile Ads SDK devem ser feitas a partir do thread principal.
-
Se o
onAdFailedToLoad()callback retornar um erro, 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 se houver limitações. -
Recomendamos manter uma referência forte ao carregador e ao anúncio durante todo o ciclo de vida da tela que hospeda as interações com o anúncio.
-
Recomendamos usar uma única instância de
RewardedAdLoaderpara todos os carregamentos de anúncios a fim de melhorar o desempenho.
Carregamento de anúncios
Para carregar anúncios premiados, crie e configure o objeto RewardedAdLoader.
Para isso, você precisará do contexto de Activity ou Application.
Para notificar quando os anúncios são carregados ou falham ao carregar, defina o listener do método de callback RewardedAdLoadListener para o objeto RewardedAdLoader.
Para carregar um anúncio, você precisa da ID de posicionamento do anúncio, obtida na interface da Yandex Advertising Network (adUnitId).
É possível ampliar os parâmetros de solicitação de anúncios com a classe AdRequest.Builder() para incluir na solicitação de anúncio informações sobre interesses do usuário, contexto da página, localização e outros dados adicionais. O acréscimo de mais contexto às solicitações de anúncios pode melhorar a qualidade dos anúncios consideravelmente. Para saber mais, consulte Segmentação de anúncios.
Após o anúncio ser carregado (chamando o método onAdLoaded(rewardedAd: RewardedAd)), salve o link para o RewardedAd carregado antes que sua exibição seja concluída.
O exemplo a seguir mostra como carregar um anúncio premiado a partir de Activity:
class RewardedAdActivity : AppCompatActivity(R.layout.activity_rewarded_ad) {
private var rewardedAd: RewardedAd? = null
private var rewardedAdLoader: RewardedAdLoader? = null
private lateinit var binding: ActivityRewardedAdBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityRewardedAdBinding.inflate(layoutInflater)
setContentView(binding.root)
// O carregamento de anúncios recompensados deve ocorrer após a inicialização do SDK.
// Inicialize o SDK o mais cedo possível, por exemplo em Application.onCreate ou Activity.onCreate
rewardedAdLoader = RewardedAdLoader(this)
loadRewardedAd()
}
private fun loadRewardedAd() {
val adRequest = AdRequest.Builder("your-ad-unit-id").build()
rewardedAdLoader?.loadAd(adRequest, object : RewardedAdLoadListener {
override fun onAdLoaded(ad: RewardedAd) {
rewardedAd = ad
// O anúncio foi carregado com sucesso. Agora você pode exibir o anúncio carregado.
}
override fun onAdFailedToLoad(adRequestError: AdRequestError) {
// O anúncio não carregou, com AdRequestError.
// Tentar carregar outro anúncio a partir do método onAdFailedToLoad() é fortemente desencorajado.
}
})
}
}
public class RewardedAdActivity extends AppCompatActivity {
@Nullable
private RewardedAd mRewardedAd = null;
@Nullable
private RewardedAdLoader mRewardedAdLoader = null;
private ActivityRewardedAdBinding mBinding;
public RewardedAdActivity() {
super(R.layout.activity_rewarded_ad);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = ActivityRewardedAdBinding.inflate(getLayoutInflater());
setContentView(mBinding.getRoot());
// O carregamento de anúncios deve ocorrer após a inicialização do SDK.
// Inicialize o SDK o mais cedo possível, por exemplo em Application.onCreate ou Activity.onCreate
mRewardedAdLoader = new RewardedAdLoader(this);
loadRewardedAd();
}
private void loadRewardedAd() {
if (mRewardedAdLoader != null) {
final AdRequest adRequest =
new AdRequest.Builder("your-ad-unit-id").build();
mRewardedAdLoader.loadAd(adRequest, new RewardedAdLoadListener() {
@Override
public void onAdLoaded(@NonNull final RewardedAd rewardedAd) {
mRewardedAd = rewardedAd;
// O anúncio foi carregado com sucesso. Agora você pode exibir o anúncio carregado.
}
@Override
public void onAdFailedToLoad(@NonNull final AdRequestError adRequestError) {
// O anúncio não carregou, com AdRequestError.
// Tentar carregar outro anúncio a partir do método onAdFailedToLoad() é fortemente desencorajado.
}
});
}
}
}
Exibição de anúncios
Anúncios com recompensa são um formato de anúncio incentivado que permite aos usuários ganhar recompensas assistindo a anúncios. Essas recompensas podem consistir em vidas extras ou a possibilidade de avançar de fase em um jogo. A formatação da recompensa é determinada pelo próprio app.
Para monitorar o ciclo de vida do anúncio premiado e enviar prêmios, defina o listener do método de callback RewardedAdEventListener para o objeto RewardedAd.
Para renderizar um anúncio, você precisará passar a Activity para o método show do anúncio carregado:
private fun showAd() {
rewardedAd?.apply {
setAdEventListener(object : RewardedAdEventListener {
override fun onAdShown() {
// Convocado quando o anúncio é exibido.
}
override fun onAdFailedToShow(adError: AdError) {
// Convocado quando um RewardedAd deixa de ser exibido
// Liberar recursos após um anúncio deixar de ser exibido
rewardedAd?.setAdEventListener(null)
rewardedAd = null
// Agora você pode pré-carregar o próximo anúncio recompensado.
loadRewardedAd()
}
override fun onAdDismissed() {
// Convocado quando o anúncio é descartado.
// Liberar recursos após o anúncio ser descartado
rewardedAd?.setAdEventListener(null)
rewardedAd = null
// Agora você pode pré-carregar o próximo anúncio recompensado.
loadRewardedAd()
}
override fun onAdClicked() {
// Convocado quando há o registro de clique em um anúncio.
}
override fun onAdImpression(impressionData: ImpressionData?) {
// Convocado quando há o registro de impressão de um anúncio.
}
override fun onRewarded(reward: Reward) {
// Convocado quando o usuário pode ser recompensado.
}
})
show(this@Activity)
}
}
private void showAd() {
if (mRewardedAd != null) {
mRewardedAd.setAdEventListener(new RewardedAdEventListener() {
@Override
public void onAdShown() {
// Convocado quando o anúncio é exibido.
}
@Override
public void onAdFailedToShow(@NonNull final AdError adError) {
// Convocado quando um anúncio deixa de ser exibido.
// Liberar recursos após um anúncio deixar de ser exibido
if (mRewardedAd != null) {
mRewardedAd.setAdEventListener(null);
mRewardedAd = null;
}
// Agora você pode pré-carregar o próximo anúncio.
loadRewardedAd();
}
@Override
public void onAdDismissed() {
// Convocado quando o anúncio é descartado.
// Liberar recursos após o anúncio ser descartado
if (mRewardedAd != null) {
mRewardedAd.setAdEventListener(null);
mRewardedAd = null;
}
// Agora você pode pré-carregar o próximo anúncio.
loadRewardedAd();
}
@Override
public void onAdClicked() {
// Convocado quando há o registro de clique em um anúncio.
}
@Override
public void onAdImpression(@Nullable final ImpressionData impressionData) {
// Convocado quando há o registro de impressão de um anúncio.
}
@Override
public void onRewarded(@NonNull final Reward reward) {
// Convocado quando o usuário pode ser recompensado.
}
});
mRewardedAd.show(this);
}
}
Liberação de recursos
Não armazene links de anúncios renderizados anteriormente. Chame setAdEventListener(null) para anúncios renderizados anteriormente.
Isso libera os recursos e evita vazamentos de memória.
override fun onDestroy() {
super.onDestroy()
rewardedAdLoader = null
destroyRewardedAd()
}
private fun destroyRewardedAd() {
rewardedAd?.setAdEventListener(null)
rewardedAd = null
}
@Override
protected void onDestroy() {
super.onDestroy();
mRewardedAdLoader = null;
destroyRewardedAd();
}
private void destroyRewardedAd() {
if (mRewardedAd != null) {
mRewardedAd.setAdEventListener(null);
mRewardedAd = null;
}
}
Teste da integração de anúncios premiados
Uso de blocos de anúncios de demonstração para teste de anúncios
Use anúncios-teste para verificar a integração dos anúncios com recompensa e o aplicativo em si. Para garantir que os anúncios-teste sejam retornados para cada solicitação de anúncio, é possível usar uma ID especial de posicionamento de anúncios demonstrativa.
adUnitId de demonstração: demo-rewarded-yandex.
Importante
Antes de publicar seu app na loja, certifique-se de substituir a ID de posicionamento demonstrativa pela ID real obtida na interface Yandex Advertising Network.
Para a lista de todas as IDs de posicionamento de anúncio demonstrativas disponíveis, consulte Blocos de anúncio demonstrativos para testes.
Teste da integração de anúncios
É possível verificar se os seus anúncios com recompensa estão integrados corretamente usando o analisador embutido do SDK. Aparecerá no log um relatório detalhado com os resultados do teste.
Para visualizar o relatório, faça uma busca pela palavra-chave "YandexAds" no Logcat, uma ferramenta para depuração de aplicativos Android.
adb logcat -v brief '*:S YandexAds'
Se a integração for bem-sucedida, a seguinte mensagem será retornada:
adb logcat -v brief '*:S YandexAds'
mobileads$ adb logcat -v brief '*:S YandexAds'
I/YandexAds(13719): [Integration] Ad type rewarded was integrated successfully
Se houver algum problema na integração dos anúncios com recompensa, você receberá um relatório detalhado do problema com soluções recomendadas.
Recursos adicionais
- Link para GitHub.