Android

4 out, 2017

Google Play Billing Library 1.0 é lançada

Publicidade

Artigo de Neto Marin, publicado originalmente pelo Android Developers Blog. A tradução foi feita pela Redação iMasters com autorização.

***

Em junho, anunciamos o developer preview para a nova Google Play Billing Library. E no dia 19 de setembro, anunciamos o lançamento oficial do Play Billing Library 1.0. Essa biblioteca simplifica o processo de desenvolvimento do Google Play Billing, permitindo que você concentre seus esforços em seu aplicativo.

Obrigado por seus valiosos feedbacks e sugestões que nos ajudaram a alcançar a versão 1.0. Assista ao vídeo abaixo para obter uma rápida visão geral dos recursos da biblioteca.

Antes que você comece

Com a Play Billing, você pode receber pagamentos de usuários em todo o mundo através de um sistema de pagamento em que eles confiam, e você pode tirar proveito de recursos e relatórios no Play Console para gerenciar e ganhar mais receita.

Se você nunca implementou faturamento no aplicativo em seus apps ou deseja saber o que pode oferecer usando a Play Billing Library, leia Visão geral do faturamento no aplicativo para se familiarizar com conceitos e terminologias que facilitam a implementação do faturamento in-app usando a Play Billing Library.

Começando

A Play Billing Library está disponível através do repositório Maven e a adição dela ao seu projeto é simples como adicionar a seguinte dependência ao arquivo build.gradle do seu aplicativo:

dependencies {
    ...
    compile 'com.android.billingclient:billing:1.0'
}

A Play Billing Library 1.0 adiciona automaticamente a permissão com.android.vending.BILLING ao seu APK. Isso significa que você não precisa mais incluí-la manualmente no manifesto do seu módulo de aplicação.

BillingClient e PurchasesUpdatedListener

Essas classes são as peças mais importantes ao integrar a biblioteca em seu aplicativo para Android. O BillingClient é a ponte entre o seu aplicativo e o Google Play. Você usará isso para listar produtos disponíveis, iniciando o fluxo de cobrança para produtos ou inscrições no aplicativo (ou seja, abrindo a interface de pagamento), obtendo as compras dos usuários e criando ou modificando assinaturas.

Ao criar sua instância do BillingClient, você precisará configurar um PurchasesUpdatedListener. Isso permite que seu aplicativo receba atualizações da API Billing no aplicativo, incluindo os resultados da transação após o fluxo de cobrança, bem como as compras concluídas fora do seu aplicativo – por exemplo, o usuário resgatou um código promocional ou comprou um produto em outro dispositivo.

O código a seguir demonstra como você pode substituir o método onPurchasesUpdated() do seu PurchasesUpdatedListener:

@Override
void onPurchasesUpdated(@BillingResponse int responseCode,
        List<Purchase> purchases) {
    if (responseCode == BillingResponse.OK
            && purchases != null) {
        for (Purchase purchase : purchases) {
            handlePurchase(purchase);
        }
    } else if (responseCode == BillingResponse.USER_CANCELED) {
        // Handle an error caused by a user canceling the purchase flow.
    } else {
        // Handle any other error codes.
    }
}

Você pode implementar o PurchasesUpdatedListener em sua Activity ou em qualquer outra classe que você deseja, de acordo com a arquitetura da sua aplicação. E aqui está o código para criar a instância do BillingClient e definir o PurchasesUpdatedListener:

mBillingClient = BillingClient.newBuilder(mContext)
                              .setListener(mPurchasesUpdatedListener)
                              .build();

Listando e vendendo produtos

Para vender produtos no seu app, primeiro, você precisa adicioná-los usando o Play Console. Para obter mais detalhes sobre como adicionar produtos ao aplicativo, consulte a página Administração do faturamento no aplicativo.

Atenção: se este é um novo aplicativo, antes de adicionar os produtos, você deve publicá-lo no canal de distribuição alfa ou beta. Para obter mais informações, consulte Aplicativos de esboço que não são mais suportados.

Para obter uma lista de detalhes do produto com os preços do usuário atual, chame querySkuDetailsAsync(). Você também deve especificar um ouvinte que implemente a interface SkuDetailsResponseListener. Você pode então substituir o método onSkuDetailsResponse() que notifica o ouvinte quando a consulta termina, conforme ilustrado pelo seguinte código de exemplo:

List<String> skuList = new ArrayList<> ();
skuList.add("premiumUpgrade");
skuList.add("gas");
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(SkuType.INAPP);
mBillingClient.querySkuDetailsAsync(params.build(),
    new SkuDetailsResponseListener() {
        @Override
        public void onSkuDetailsResponse(SkuDetailsResult result) {
            // Process the result.
        }
    })

Depois que o usuário escolher um produto para comprar, você precisará iniciar o fluxo de cobrança e lidar com o resultado da transação. Para iniciar uma solicitação de compra a partir de seu aplicativo, chame o método launchBillingFlow() no cliente Play Billing Library. Você deve chamar o método launchBillingFlow() (e todos os outros métodos do BillingClient) da thread UI.

O método launchBillingFlow() precisa do objeto BillingFlowParams que contém dados relevantes para concluir a compra, como a ID do produto a ser comprado e o tipo de produto (neste caso, SkuType.INAPP). Para obter uma instância do BillingFlowParams, construa-o com o método newBuilder():

BillingFlowParams.Builder builder = BillingFlowParams
                                       .newBuilder()
                                       .setSku(skuId).setType(SkuType.INAPP);
int responseCode = mBillingClient.launchBillingFlow(builder.build());

Como mencionamos anteriormente, o resultado da transação será enviado para o método onPurchasesUpdated(). Para obter detalhes sobre como processar os dados recebidos no onPurchasesUpdated() e como lidar com uma compra, verifique a seção Purchase an item em nosso guia de treinamento.

Consumindo produtos

Por padrão, todos os produtos no aplicativo são gerenciados. Isso significa que o Google Play rastreia a propriedade do produto e não permite comprar várias vezes. Para poder comprar um produto novamente, você deve consumir o produto antes que ele esteja disponível novamente.

É comum implementar o consumo de produtos no aplicativo que os usuários podem querer comprar várias vezes, como moeda ou equipamento no jogo. Normalmente, você não deseja implementar o consumo de produtos no aplicativo que o usuário vai comprar uma vez e fornecer um efeito permanente, como uma atualização premium.

Para consumir um produto, chame o método consumeAsync() no cliente Play Billing Library e passe o valor da compra Token String retornado quando você fez a compra. O resultado do consumo é retornado através do método onConsumeResponse() da interface ConsumeResponseListener, que você deve substituir para lidar com o resultado do consumo.

O exemplo a seguir ilustra o consumo de um produto usando purchaseToken:

ConsumeResponseListener listener = new ConsumeResponseListener() {
    @Override
    public void onConsumeResponse(@BillingResponse int responseCode, 
                                  String outToken) {
        if (responseCode == BillingResponse.OK) {
            // Handle the success of the consume operation.
            // For example, increase the number of player's coins,
            // that provide temporary benefits
        }
    }
};
mBillingClient.consumeAsync(purchaseToken, listener);

Exemplo atualizado: Trivial Drive V2

Com uma nova biblioteca vem uma amostra atualizada! Para ajudá-lo a entender como implementar o faturamento no aplicativo em seu app usando a nova Play Billing Library, reescrevemos a amostra do Trivial Drive desde o início.

Desde que lançamos o Trivial Drive em 2013, muitos novos recursos, dispositivos e plataformas foram adicionados ao ecossistema Android. Para refletir essa evolução, a amostra Trivial Drive v2 agora é executada no Android TV e no Android Wear.

O que vem a seguir?

Antes de integrá-la no seu aplicativo, você pode testar a Play Billing Library com o codelab publicado na Google I/O 2017: Buy and Subscribe: Monetize your app on Google Play.

Neste codelab, você começará com uma versão simplificada do Trivial Drive V2 que permite que os usuários “dirijam” e, em seguida, você adicionará cobrança ao aplicativo. Você aprenderá como integrar compras e assinaturas, bem como as melhores práticas para o desenvolvimento de aplicativos confiáveis que gerenciam compras.

Obtenha mais informações sobre a Play Billing Library e a referência oficial para documentação de classes e métodos no site Android Developers. Para um guia passo a passo para implementar a Play Billing Library em seu projeto, visite a classe de treinamento da biblioteca.

Para obter mais detalhes sobre a versão 1.0 da Play Billing Library, consulte as páginas as notas de lançamento, nas quais você pode encontrar atualizações, correções de bugs e mudanças de comportamento na biblioteca desde a versão Developer Preview.

Ainda queremos seu feedback

Se você tiver problemas ou perguntas, envie um relatório de erro no Google Issue Tracker, e para questões e sugestões sobre a amostra (como um bug ou um novo recurso), contate-nos na página de problemas do Trivial Drive.

Para questões técnicas sobre implementação, uso da biblioteca e melhores práticas, você pode usar as tags google-play e play-billing-library no StackOverflow ou visitar as comunidades em nossa página do Google+.

***

Este artigo é do Android Developers Blog. Ele foi escrito por Neto Marin. A tradução foi feita pela Redação iMasters com autorização. Você pode acessar o original emhttps://android-developers.googleblog.com/2017/09/google-play-billing-library-10-released.html