Ir para o conteúdo

Guia · Android (Kotlin)

Adicione um programa de afiliados ou de indicação ao seu app Android.

O SDK Android da InfluTo foi escrito para Kotlin e corrotinas. Ele mostra qual criador indicou uma instalação, aceita códigos de indicação digitados e faz a verificação de cada compra, pelo RevenueCat ou direto no Google Play Billing.

Atualizado em 1 de novembro de 2026

Em resumo

Adicione to.influ:android-sdk do Maven Central, chame InfluTo.initialize uma vez em Application.onCreate (é uma função suspend) e depois checkAttribution e identifyUser. Com o RevenueCat, não há mais nada para ligar no código: o SDK encontra o RevenueCat sozinho e marca o assinante. Sem o RevenueCat, adicione to.influ:android-sdk-billing. Ele traz a Play Billing Library 9.0.0, captura as compras automaticamente e também recebe cada compra do seu próprio PurchasesUpdatedListener. Exige minSdk 24 e uma toolchain Java 17. Reserve uma tarde, a maior parte para o lado das compras.

Passo 1: adicione os artefatos de que você precisa

O SDK é dividido em três artefatos no Maven Central, todos na mesma versão, então mavenCentral() precisa estar nos seus repositórios. Adicione só o que precisar: cada complemento traz o núcleo junto, e os artefatos core e billing já incluem as próprias regras de R8/ProGuard.

// build.gradle.kts
dependencies {
    implementation("to.influ:android-sdk:1.1.1")
    // optional: Compose code field (InfluToReferralCodeInput)
    implementation("to.influ:android-sdk-ui:1.1.1")
    // optional: store-direct purchase auto-capture
    implementation("to.influ:android-sdk-billing:1.1.1")
}
ArtefatoAdicione quandoO que traz
android-sdkSempreO SDK; adiciona a permissão INTERNET
android-sdk-uiVocê quer o campo de código pronto em ComposeInfluToReferralCodeInput (Material 3)
android-sdk-billingSeu app cobra direto pela loja (sem RevenueCat)Captura automática de compras; adiciona a Google Play Billing Library 9.0.0 (billing-ktx) e a permissão com.android.vending.BILLING

Passo 2: inicialize em Application.onCreate

initialize é uma função suspend. Chame-a uma vez na inicialização e aguarde: até ela ter sucesso, checkAttribution e reportPurchase lançam InfluToError.NotInitialized. Se ela falhar (chave errada, sem rede), lança uma exceção: capture, registre no log e siga em frente.

Use Application.onCreate ou um escopo do app inteiro, não o onCreate de uma activity, que roda de novo a cada mudança de configuração. Não está em uma corrotina? Todo método de rede tem uma versão com callback; os callbacks rodam em uma thread de segundo plano, então volte para a thread principal antes de mexer na interface.

A chave de API (it_…, em Configuração e SDK) vale para desenvolvimento e produção. Guarde-a em um campo do BuildConfig preenchido por uma propriedade do Gradle em local.properties ou nos segredos do seu CI. Uma inicialização típica em um app com RevenueCat:

class MyApp : Application() {
    private val appScope = MainScope()

    override fun onCreate() {
        super.onCreate()
        // RevenueCat apps: configure it first
        Purchases.configure(PurchasesConfiguration.Builder(this, "goog_…").build())

        appScope.launch {
            try {
                InfluTo.initialize(this@MyApp, InfluToConfig(
                    apiKey = BuildConfig.INFLUTO_API_KEY,
                    appVersion = BuildConfig.VERSION_NAME,
                ))
            } catch (e: Exception) {
                Log.w("InfluTo", "initialize failed", e) // retried on the next launch
                return@launch
            }
            val attribution = InfluTo.checkAttribution()
            InfluTo.identifyUser(Purchases.sharedInstance.appUserID)
        }
    }
}

Passo 3: códigos de indicação e o campo em Compose

applyCode(code) é uma chamada suspend que valida um código e o aplica, se for válido. Os códigos são aparados e convertidos para maiúsculas. Um código inválido retorna valid = false com um errorCode: INVALID_FORMAT, CODE_NOT_FOUND, CODE_EXPIRED, NETWORK_ERROR ou UNKNOWN.

Com android-sdk-ui, InfluToReferralCodeInput é um composable Material 3 que valida enquanto a pessoa digita, aplica o código ao toque, o preenche sozinho em uma instalação atribuída por link e aceita seus textos traduzidos. Ele só mostra o nome do criador se você ativar showReferrerName.

Passo 4: conecte as compras

A InfluTo só paga comissão sobre compras verificadas com a loja. Escolha um caminho para o Android:

  • RevenueCat: nada para ligar no código. Quando uma indicação é encontrada ou um código é aplicado, o SDK localiza o SDK do RevenueCat e define influto_code e influto_referral; passe revenueCatAttributeSetter para ser explícito. Configure o RevenueCat primeiro e não adicione android-sdk-billing.

  • Cobrança direta na loja (Play Billing): adicione android-sdk-billing. Em um app com cobrança direta na loja, initialize inicia um observador com a própria conexão do Play Billing, que reporta as novas compras e varre as existentes a cada início. Só compras PURCHASED são enviadas, cada uma uma vez, identificada pelo token da compra.

Produtos avulsos e consumíveis precisam de productId, mais price e currency: sem productId, a compra é verificada como assinatura e falha; sem price, é registrada como US$ 0. Liste-os em oneTimeProductIds e a captura automática adiciona os dois. Um 409 significa que uma compra avulsa ainda está pendente.

A maioria dos apps tem o próprio BillingClient. Entregue cada compra ao módulo também a partir do seu PurchasesUpdatedListener, para que ela seja reportada no instante em que acontece. Ele usa a mesma deduplicação, então nada é reportado duas vezes:

override fun onPurchasesUpdated(result: BillingResult, purchases: MutableList<Purchase>?) {
    if (result.responseCode != BillingClient.BillingResponseCode.OK || purchases == null) return
    scope.launch {
        for (purchase in purchases) {
            InfluToBilling.report(context, purchase) // subscriptions
            // one-time products: InfluToBilling.report(context, purchase, oneTime = true, price = 4.99, currency = "EUR")
        }
    }
}

Passo 5: adicione a conta de serviço do Google Play

O modo direto com a loja precisa de acesso de leitura à Google Play Developer API. O InfluTo só lê; nunca altera nada no seu Play Console.

  1. 1

    Ative a API. No Google Cloud, ative a Google Play Android Developer API e crie uma conta de serviço com uma chave JSON.

  2. 2

    Conceda acesso no Play Console. Em Usuários e permissões, convide o e-mail da conta de serviço e dê a ela a permissão Ver dados financeiros, pedidos e respostas de pesquisas de cancelamento para o app.

  3. 3

    Envie, valide, troque. Envie a chave JSON em Configurações → Validação e clique em Salvar e validar. Quando a verificação ficar verde, defina o Android como Google — direto.

Novas permissões do Google podem levar até 48 horas para chegar à API; enquanto isso, o InfluTo mostra “propagando”. Até você trocar, os relatórios de compra recebem um 400, então publicar o SDK primeiro é seguro.

Passo 6: teste com um testador de licença

Compras de teste nunca movimentam dinheiro nem alteram suas estatísticas:

  1. 1

    Simule uma compra. Simular compra em Configuração e SDK envia uma compra de teste em sandbox pelo pipeline real do InfluTo. Digite um dos seus códigos para ver a atribuição funcionar.

  2. 2

    Instale por um link de indicação. Entre na sua campanha com uma segunda conta de criador, abra o link dela em um dispositivo de teste, instale sua build de teste e abra o app. Digitar o código é o teste mais confiável.

  3. 3

    Compre como testador de licença. Faça uma compra como testador de licença do Google Play. O log de integração, no modo Sandbox, mostra a compra atribuída ao seu código; com debug = true, o SDK registra cada etapa no Logcat com a tag InfluTo.

clearAttribution() redefine o dispositivo para um novo teste; limpar o armazenamento do app ou reinstalar garante um começo mais limpo.

Notas sobre o Android

Alguns detalhes da plataforma:

  • Corrotinas primeiro. Os métodos de rede são funções suspend; getReferralCode(), getPrefilledCode() e clearAttribution() são funções comuns.

  • Permissões. O módulo principal adiciona INTERNET; o android-sdk-billing adiciona com.android.vending.BILLING. A documentação de privacidade explica o que declarar no formulário de Segurança dos dados do Google Play.

  • Versão do Play Billing. O android-sdk-billing expõe a Play Billing Library 9.0.0, que o Gradle resolve junto com a sua própria dependência do Billing.

  • Sem ID de publicidade. O InfluTo não usa o ID de publicidade, não rastreia usuários entre apps e nunca faz correspondência por características do dispositivo.

Ou deixe seu agente de código fazer isso

Conecte o servidor MCP do InfluTo ao Claude Code, Codex ou Cursor e peça a integração: o agente escreve as linhas do Gradle e o código de inicialização, te entrega um link para você mesmo enviar o JSON da conta de serviço, roda a verificação das credenciais e confirma uma compra de teste atribuída.

SDK de afiliados para Android: perguntas e respostas.

Existe um SDK de afiliados para apps Android escritos em Kotlin?

Sim. O to.influ:android-sdk no Maven Central (MIT, código em github.com/influto/influto-android) adiciona detecção de instalações indicadas, códigos de indicação e atribuição de compras a apps Android nativos. Ele exige minSdk 24 e uma toolchain Java 17, e o módulo principal depende apenas do kotlinx-coroutines.

Preciso da Google Play Billing Library?

Só no modo direto com a loja. O android-sdk-billing adiciona a Play Billing Library 9.0.0 (billing-ktx) e a permissão BILLING. Apps com RevenueCat usam apenas o SDK principal.

Funciona com o RevenueCat no Android?

Sim. O SDK encontra o SDK do RevenueCat sozinho e define influto_code e influto_referral no assinante, ou você passa revenueCatAttributeSetter explicitamente. Depois, o webhook do RevenueCat envia cada compra, renovação e reembolso ao InfluTo.

Ele lida com consumíveis e compras únicas?

Sim. Liste os IDs dos produtos em oneTimeProductIds para que as compras capturadas sejam validadas como compras únicas, e informe-as com preço e moeda se o seu código de cobrança não expuser o preço. Reembolsos de compras únicas do Google Play são detectados e a comissão é estornada.

Quanto custa?

$0 por mês. Por compra verificada, você paga a comissão que definiu mais 10% da mesma receita (7%, 5% ou 3% em volume). A carteira pré-paga começa em $50 e é reembolsável; o InfluTo paga os criadores todo mês via Stripe Connect em 33 países, assim que eles ganham $20.

Lance códigos de indicação na sua próxima versão.

Uma linha de Gradle, um caminho de validação, um depósito reembolsável. $0 por mês; 10% só sobre a receita que os criadores trazem.

Comece grátis