Adicionar recursos específicos de produtos concedidos como prêmio

Um método para desbloquear benefícios e produtos no aplicativo para seus usuários é criar produtos concedidos como prêmio ou itens que os usuários possam receber depois de assistir um anúncio em vídeo. Ao conceder produtos como prêmio, você permite que os usuários consigam recompensas e benefícios dentro do app sem precisar fazer compras diretas.

Este documento explica como implementar uma funcionalidade específica para produtos concedidos como prêmio. A seção do diagrama de fluxo de trabalho desta página ilustra o processo.

Identificar os produtos concedidos como prêmio do seu app

Produtos concedidos como prêmio têm um SkuType de INAPP. Para garantir que os usuários possam assistir a muitos anúncios e receber várias recompensas por isso, os produtos precisam ser consumidos.

Antes de oferecer um produto concedido como prêmio a um usuário, você precisa do SkuDetails do produto. Para fazer isso, chame querySkuDetailsAsync() com SkuType.INAPP como o tipo de produto.

Declarar anúncios adequados à idade

Para facilitar o cumprimento das obrigações legais relacionadas a crianças e a usuários menores de idade, incluindo a Lei de Proteção da Privacidade On-line das Crianças (COPPA) e o Regulamento geral de proteção de dados (GDPR), seu app precisa declarar quais anúncios precisam ser tratados como direcionados a crianças nos Estados Unidos e quais são direcionados a usuários abaixo da idade mínima de consentimento no país deles. A Central de Ajuda da AdMob explica quando é preciso marcar as solicitações de anúncios como tratamento para direcionamento a crianças e quando é preciso marcar como tratamento para usuários abaixo da idade de consentimento, além das consequências de fazer isso.

Ao criar o cliente de faturamento do seu app, considere se as solicitações de anúncio premiado precisam ser tratadas como direcionadas a crianças ou se precisam ser direcionadas a usuários abaixo da idade de consentimento. Se as solicitações de anúncios tiverem essas restrições, chame os métodos setChildDirected() e setUnderAgeOfConsent(), passando os valores apropriados para cada método.

O snippet de código a seguir mostra como declarar que os anúncios em vídeo precisam ser adequados para crianças ou para usuários abaixo da idade de consentimento:

Kotlin

val billingClient = BillingClient.newBuilder(context)
        .setListener(this)
        .setChildDirected(ChildDirected.CHILD_DIRECTED)
        .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT)
        .build()

Java

BillingClient billingClient =
    BillingClient.newBuilder(context)
        .setListener(this)
        .setChildDirected(ChildDirected.CHILD_DIRECTED)
        .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT)
        .build();

Carregar anúncios em vídeo

Antes de mostrar ao usuário uma opção de assistir um anúncio em vídeo para receber um produto concedido como prêmio, você precisa carregar o vídeo. Para isso, crie um objeto RewardLoadParams, associando-o com o objeto SkuDetails que representa o produto concedido como prêmio. Em seguida, chame o método loadRewardedSku() do cliente de faturamento, passando pelo objeto RewardLoadParams e um objeto RewardResponseListener.

O listener RewardResponseListener é notificado quando o vídeo termina de ser carregado. O listener também é notificado quando o vídeo não está disponível ou quando ocorre outro erro, como um tempo limite do servidor.

Para manter o desempenho do dispositivo enquanto carrega os vídeos associados aos produtos concedidos como prêmio do seu app, siga as práticas recomendadas a seguir:

  • Carregue no máximo três SKUs de produtos concedidos como prêmio por vez.
  • Tente carregar os vídeos sempre que o usuário entrar no app. Esta etapa ajuda a verificar se os vídeos ainda estão carregados e disponíveis.
  • Ao decidir quando carregar os vídeos, escolha o equilíbrio entre uso de banda larga e capacidade de resposta do app que funcione melhor no seu caso de uso:

    • Na primeira oportunidade, carregue os vídeos depois de chamar getSkuDetails() para o produto concedido como prêmio associado. Seu app permanece muito responsivo, mas você pode desperdiçar dados de rede carregando um vídeo que o usuário nunca verá.
    • Por fim, carregue o vídeo quando o usuário navegar até a página onde o vídeo será exibido. Seu app raramente desperdiça largura de banda nesse caso, mas o usuário pode ter que esperar um pouco até que o botão para assistir ao vídeo se torne clicável.

O snippet de código a seguir demonstra o processo de carregamento de um anúncio em vídeo exibido antes de o usuário receber o produto concedido como prêmio:

Kotlin

if (skuDetails.isRewarded()) {
    val params = RewardLoadParams.Builder()
            .setSkuDetails(skuDetails)
            .build()
    mBillingClient.loadRewardedSku(params.build(),
            object : RewardResponseListener {
        override fun onRewardResponse(@BillingResponse responseCode : Int) {
            if (responseCode == BillingResponse.OK) {
                // Enable the reward product, or make
                // any necessary updates to the UI.
            }
        }
    })
}

Java

if (skuDetails.isRewarded()) {
    RewardLoadParams.Builder params = RewardLoadParams.newBuilder();
    params.setSkuDetails(skuDetails);
    mBillingClient.loadRewardedSku(params.build(),
        new RewardResponseListener() {
            @Override
            public void onRewardResponse(int responseCode) {
                if (responseCode == BillingResponse.OK) {
                      // Enable the reward product, or make
                      // any necessary updates to the UI.
                  }
            }
        });
}

Dar compras como prêmio ao usuário

Se a Biblioteca Play Faturamento carregar o vídeo associado ao produto concedido como prêmio, ou seja, se o RewardResponseListener receber um responseCode de BillingResponse.OK, você vai poder lançar o fluxo de faturamento.

A reprodução de anúncios para um produto concedido como prêmio é iniciada chamando launchBillingFlow(), assim como para todos os outros tipos de produto no aplicativo. Mesmo que o usuário não faça uma compra direta para receber um produto concedido como prêmio, você ainda precisa ativar o fluxo de faturamento para que ele possa receber e usar o produto.

Consumir a compra

Para notificar o cliente de faturamento de que um usuário recebeu e consumiu um produto concedido como prêmio, processe a compra no método onPurchasesUpdated() do listener do seu cliente de faturamento. Compras concedidas como prêmio precisam ser consumidas.

Testar seus produtos concedidos como prêmio

Para testar como seu app carrega anúncios em vídeo e oferece produtos concedidos como prêmio aos usuários, use os testadores licenciados, que, por padrão, recebem anúncios de teste em vez de anúncios reais. Para aprender a configurar contas para esses testadores, consulte Testar um app do Google Play Faturamento com o usuário.

Você também pode usar o ID do produto android.test.reward como outro método de teste. Esse produto específico é um nome reservado no Google Play Faturamento. Sendo assim, você não precisa adicioná-lo à sua lista de produtos no aplicativo no Play Console.

Cuidado: ao testar os produtos concedidos como prêmio do seu app, não use produtos reais. Caso contrário, sua conta pode ser marcada como fraudulenta ou spam.

Quando terminar os testes, no entanto, substitua android.test.reward pelos IDs dos produtos concedidos como prêmio antes de implantar o app de produção para os usuários finais.

Diagrama do fluxo de trabalho de produto concedido como prêmio

O diagrama de sequência a seguir mostra como o usuário, seu app e a Biblioteca Google Play Faturamento trabalham juntos para mostrar um anúncio em vídeo e garantir acesso a um produto concedido como prêmio:

Diagrama de sequência mostrando o protocolo de produtos concedidos como prêmio
Figura 1. Etapas para concluir uma compra de produto concedido como prêmio usando o Google Play Faturamento.