Os anúncios premiados são aqueles com que os usuários têm a opção de interagir em troca de prêmios no app. Este guia mostra como integrar os anúncios premiados da AdMob a um app do Unity.
Leia algumas histórias de sucesso de clientes: estudo de caso 1, estudo de caso 2.
Este guia explica como integrar os anúncios premiados a um app do Unity.
Pré-requisitos
- Concluir o Guia de primeiros passos.
Sempre faça testes com anúncios de teste
O exemplo de código abaixo contém um ID de bloco de anúncios que pode ser usado para solicitar anúncios de teste. Ele foi configurado especialmente para retornar anúncios de teste em vez de anúncios de produção para cada solicitação, o que torna o uso seguro.
No entanto, depois de registrar um app na IU da AdMob e criar seus próprios IDs de bloco de anúncios para uso no app, será necessário configurar explicitamente seu dispositivo como um dispositivo de teste durante o desenvolvimento.
Android
ca-app-pub-3940256099942544/5224354917
iOS
ca-app-pub-3940256099942544/1712485313
Inicializar o SDK de anúncios para dispositivos móveis
Antes de carregar anúncios, chame MobileAds.Initialize()
para que o app inicialize o SDK de anúncios para dispositivos móveis. Isso só precisa ser feito uma vez, de preferência na inicialização do app.
using GoogleMobileAds;
using GoogleMobileAds.Api;
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
public void Start()
{
// Initialize the Google Mobile Ads SDK.
MobileAds.Initialize((InitializationStatus initStatus) =>
{
// This callback is called once the MobileAds SDK is initialized.
});
}
}
Se você estiver usando a mediação, aguarde até que o callback ocorra antes de carregar os anúncios. Isso garantirá que todos os adaptadores de mediação sejam inicializados.
Implementação
As principais etapas para integrar anúncios premiados são:
- Carregar o anúncio premiado
- [Opcional] Validar callbacks de verificação do servidor (SSV)
- Exibir o anúncio premiado com callback
- Ouvir eventos de anúncios premiados
- Limpar o anúncio premiado
- Pré-carregar o próximo anúncio premiado
Carregar o anúncio premiado
Para carregar um anúncio premiado, use o método estático Load()
na classe RewardedAd
. O objeto RewardedAd
carregado é fornecido como um parâmetro no gerenciador de conclusão. O exemplo abaixo mostra como carregar um RewardedAd
.
// These ad units are configured to always serve test ads.
#if UNITY_ANDROID
private string _adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
private string _adUnitId = "ca-app-pub-3940256099942544/1712485313";
#else
private string _adUnitId = "unused";
#endif
private RewardedAd rewardedAd;
/// <summary>
/// Loads the rewarded ad.
/// </summary>
public void LoadRewardedAd()
{
// Clean up the old ad before loading a new one.
if (rewardedAd != null)
{
rewardedAd.Destroy();
rewardedAd = null;
}
Debug.Log("Loading the rewarded ad.");
// create our request used to load the ad.
var adRequest = new AdRequest();
adRequest.Keywords.Add("unity-admob-sample");
// send the request to load the ad.
RewardedAd.Load(_adUnitId, adRequest,
(RewardedAd ad, LoadAdError error) =>
{
// if error is not null, the load request failed.
if (error != null || ad == null)
{
Debug.LogError("Rewarded ad failed to load an ad " +
"with error : " + error);
return;
}
Debug.Log("Rewarded ad loaded with response : "
+ ad.GetResponseInfo());
rewardedAd = ad;
});
}
[Opcional] Validar callbacks de verificação do servidor (SSV)
Apps que exigem dados extras nos callbacks de verificação do servidor precisam usar o recurso de dados personalizados dos anúncios premiados.
Qualquer valor de string definido em um objeto de anúncio premiado é transmitido para o parâmetro de consulta custom_data
do callback da SSV. Se nenhum valor de dados personalizados for definido, o valor do parâmetro de consulta custom_data
não estará presente no callback da SSV.
O exemplo de código a seguir demonstra como definir as opções de SSV depois que o anúncio premiado é carregado.
// send the request to load the ad.
RewardedAd.Load(_adUnitId, adRequest, (RewardedAd ad, LoadAdError error) =>
{
// If the operation failed, an error is returned.
if (error != null || ad == null)
{
Debug.LogError("Rewarded ad failed to load an ad with error : " + error);
return;
}
// If the operation completed successfully, no error is returned.
Debug.Log("Rewarded ad loaded with response : " + ad.GetResponseInfo());
// Create and pass the SSV options to the rewarded ad.
var options = new ServerSideVerificationOptions
.Builder()
.SetCustomData("SAMPLE_CUSTOM_DATA_STRING")
.Build()
ad.SetServerSideVerificationOptions(options);
});
Se você quiser definir a string de prêmio personalizada, faça isso antes de mostrar o anúncio.
Exibir o anúncio premiado com callback
Ao apresentar seu anúncio, você precisa fornecer um callback para processar o prêmio para o usuário. Os anúncios só podem ser exibidos uma vez por carregamento. Use o método CanShowAd()
para verificar se o anúncio está pronto para ser exibido.
O código a seguir apresenta o melhor método para exibir um anúncio premiado.
public void ShowRewardedAd()
{
const string rewardMsg =
"Rewarded ad rewarded the user. Type: {0}, amount: {1}.";
if (rewardedAd != null && rewardedAd.CanShowAd())
{
rewardedAd.Show((Reward reward) =>
{
// TODO: Reward the user.
Debug.Log(String.Format(rewardMsg, reward.Type, reward.Amount));
});
}
}
Ouvir eventos de anúncios premiados
Para personalizar ainda mais o comportamento do seu anúncio, você pode se envolver em vários eventos no ciclo de vida do anúncio: abertura, fechamento e assim por diante. Ouça esses eventos registrando um representante, conforme mostrado abaixo.
private void RegisterEventHandlers(RewardedAd ad)
{
// Raised when the ad is estimated to have earned money.
ad.OnAdPaid += (AdValue adValue) =>
{
Debug.Log(String.Format("Rewarded ad paid {0} {1}.",
adValue.Value,
adValue.CurrencyCode));
};
// Raised when an impression is recorded for an ad.
ad.OnAdImpressionRecorded += () =>
{
Debug.Log("Rewarded ad recorded an impression.");
};
// Raised when a click is recorded for an ad.
ad.OnAdClicked += () =>
{
Debug.Log("Rewarded ad was clicked.");
};
// Raised when an ad opened full screen content.
ad.OnAdFullScreenContentOpened += () =>
{
Debug.Log("Rewarded ad full screen content opened.");
};
// Raised when the ad closed full screen content.
ad.OnAdFullScreenContentClosed += () =>
{
Debug.Log("Rewarded ad full screen content closed.");
};
// Raised when the ad failed to open full screen content.
ad.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("Rewarded ad failed to open full screen content " +
"with error : " + error);
};
}
Limpar o anúncio premiado
Quando terminar de usar RewardedAd
, chame o método Destroy()
antes de descartar sua referência a ele:
rewardedAd.Destroy();
Isso notifica o plug-in de que o objeto não é mais usado e de que a memória ocupada pode ser recuperada. A não chamada desse método resulta em vazamentos de memória.
Pré-carregar o próximo anúncio premiado
RewardedAd
é um objeto de uso único. Isso significa que, depois que um anúncio premiado é exibido,
o objeto não pode ser usado novamente. Para solicitar outro anúncio premiado,
crie um novo objeto RewardedAd
.
Para preparar um anúncio premiado para a próxima oportunidade de impressão, pré-carregue o anúncio premiado quando o evento de anúncio OnAdFullScreenContentClosed
ou OnAdFullScreenContentFailed
for gerado.
private void RegisterReloadHandler(RewardedAd ad)
{
// Raised when the ad closed full screen content.
ad.OnAdFullScreenContentClosed += ()
{
Debug.Log("Rewarded Ad full screen content closed.");
// Reload the ad so that we can show another as soon as possible.
LoadRewardedAd();
};
// Raised when the ad failed to open full screen content.
ad.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("Rewarded ad failed to open full screen content " +
"with error : " + error);
// Reload the ad so that we can show another as soon as possible.
LoadRewardedAd();
};
}
Outros recursos
Amostras
- Exemplo de HelloWorld: implementação mínima de todos os formatos de anúncio.