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")
}| Artefato | Adicione quando | O que traz |
|---|---|---|
| android-sdk | Sempre | O SDK; adiciona a permissão INTERNET |
| android-sdk-ui | Você quer o campo de código pronto em Compose | InfluToReferralCodeInput (Material 3) |
| android-sdk-billing | Seu 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
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
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
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
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
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
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