Guia · React Native e Expo
Adicione um programa de afiliados ou de indicação ao seu app React Native.
O @influto/react-native-sdk funciona no Expo gerenciado e no React Native puro, em iOS e Android. Ele mostra qual criador indicou uma instalação, aceita códigos de indicação digitados e faz cada compra ser verificada pelo RevenueCat ou diretamente com a Apple e o Google.
Atualizado em 1 de novembro de 2026
Em resumo
Instale @influto/react-native-sdk e @react-native-async-storage/async-storage, chame InfluTo.initialize uma vez na raiz do app e depois checkAttribution e identifyUser. Com RevenueCat, esse é todo o código: com react-native-purchases instalado, o SDK grava o atributo influto_code no assinante e o webhook do RevenueCat faz o resto. Sem RevenueCat, instale expo-iap ou react-native-iap e o SDK captura as compras da loja sozinho. O Expo não precisa de config plugin. Reserve uma tarde.
O que o SDK faz em um app React Native
Um único pacote cobre iOS, Android e todos os fluxos do Expo. Ele faz três trabalhos:
Encontra o criador por trás de uma instalação. O checkAttribution responde uma vez por instalação. Um código digitado é uma correspondência exata; caso contrário, a correspondência por clique no link liga a instalação a um toque recente no link do criador, em até 72 horas. Sem IDFA, sem aviso do ATT.
Aceita códigos de indicação digitados. O applyCode, ou o campo pronto ReferralCodeInput, cobre menções em podcasts e vídeos, onde ninguém toca em um link.
Liga as compras à indicação. Com RevenueCat, ele marca o assinante; com compra direta na loja, informa a compra assinada pela loja para o InfluTo verificar com a Apple ou o Google. A comissão só existe depois dessa verificação.
Passo 1: instale o pacote
Adicione o SDK e o AsyncStorage, que guarda o estado local do SDK. O AsyncStorage é um módulo nativo, então precisa estar nas dependências do seu próprio app para o autolinking funcionar. No React Native puro, rode pod install em ios/ depois.
No Expo, não há mais nada a adicionar nem config plugin: o SDK é JavaScript puro sobre o AsyncStorage, então roda no Expo Go, em development builds e em builds de produção. Ele exige React Native 0.60+ e React 16.8+.
npm install @influto/react-native-sdk
# AsyncStorage is a native module — install it in the app too
npm install @react-native-async-storage/async-storagePasso 2: inicialize uma vez e verifique a atribuição
Chame initialize uma vez, o mais cedo possível, e aguarde antes de qualquer outra coisa. Em caso de falha (chave errada, sem rede), ele lança um erro: capture, registre no log e siga em frente; na próxima abertura ele tenta de novo.
O checkAttribution diz se a instalação foi indicada e por qual código. A decisão é tomada uma vez por instalação, fica guardada no dispositivo e falha sem quebrar nada: um erro de rede retorna attributed: false. Use para dar boas-vindas a usuários indicados ou mostrar a oferta que o criador anunciou.
A chave de API (it_…, em Setup & SDK) vale para desenvolvimento e produção. Não a deixe no código versionado; por exemplo, use um .env no gitignore lido pelas variáveis EXPO_PUBLIC_ do Expo. Um App.tsx típico em um app com RevenueCat, em ordem:
import { useEffect } from 'react';
import Purchases from 'react-native-purchases';
import InfluTo from '@influto/react-native-sdk';
export default function App() {
useEffect(() => {
(async () => {
Purchases.configure({ apiKey: REVENUECAT_API_KEY }); // RevenueCat apps: configure it first
try {
await InfluTo.initialize({
apiKey: process.env.EXPO_PUBLIC_INFLUTO_API_KEY!,
appVersion: '1.4.0',
debug: __DEV__,
});
} catch (error) {
console.warn('InfluTo initialize failed', error); // retried on the next launch
return;
}
const attribution = await InfluTo.checkAttribution();
await InfluTo.identifyUser(await Purchases.getAppUserID());
})();
}, []);
// …
}Passo 3: adicione um campo de código de indicação
Muitas indicações chegam como um código falado, não como um toque. O applyCode(code) valida o código e o aplica se for válido; os códigos são cortados e convertidos para maiúsculas por você. Um código inválido retorna valid: false com um error_code como CODE_NOT_FOUND ou CODE_EXPIRED.
Ou use o ReferralCodeInput de @influto/react-native-sdk/ui. Ele preenche o código em uma instalação atribuída por link, aceita suas cores, fontes e rótulos traduzidos, e só mostra o nome do criador se você ativar.
// Validate, then apply a code the user typed
const result = await InfluTo.applyCode('FITGURU30');
if (result.valid && result.applied) {
// Unlock the offer
}
// Or drop in the ready-made UI:
import { ReferralCodeInput } from '@influto/react-native-sdk/ui';
<ReferralCodeInput onApplied={(result) => {/* ... */}} />Passo 4: conecte as compras, com RevenueCat ou direto na loja
O InfluTo só paga comissão sobre compras verificadas pela loja. Escolha exatamente um caminho por plataforma; o iOS pode usar compra direta na loja enquanto o Android continua no RevenueCat.
RevenueCat: nada para ligar no código. Com react-native-purchases instalado, o SDK define influto_code e influto_referral no assinante quando uma indicação é encontrada ou um código é aplicado. Depois, conecte o webhook em Setup & SDK, automaticamente com uma chave secreta v2 do RevenueCat ou manualmente.
Compra direta na loja: instale expo-iap ou react-native-iap, adicione suas credenciais da App Store e do Google Play em Settings → Validation e mude a plataforma para compra direta na loja. Então o initialize captura as novas compras e recupera as já existentes, cada uma informada uma única vez. Defina autoCapture: false se preferir chamar reportPurchase você mesmo.
O cuidado com o RevenueCat: o atributo é gravado uma vez, quando a indicação é encontrada, e a gravação é ignorada se o RevenueCat ainda não estiver configurado. Configure o Purchases, depois chame initialize, depois checkAttribution, e use identifyUser com o app user ID do RevenueCat como alternativa.
O cuidado com a compra direta na loja: liste os produtos avulsos do Android em oneTimeProductIds e informe-os você mesmo com preço e moeda se a sua biblioteca de IAP não expuser o preço; senão, eles são registrados com $0. O que o SDK detecta sozinho:
| Pacote | O que o SDK faz com ele |
|---|---|
| react-native-purchases | Define os atributos influto_code e influto_referral do RevenueCat quando uma indicação é encontrada ou um código é aplicado |
| expo-iap ou react-native-iap | Captura compras da loja em apps com compra direta (o expo-iap tem prioridade se os dois estiverem instalados) |
| react-native-device-info | Inclui a marca e o modelo do dispositivo no rastreamento de instalações |
Notas sobre Expo e React Native
A maioria dos problemas de integração no React Native vem de montagem e ordem:
O Expo Go serve; as bibliotecas de loja, não. O Expo Go roda o SDK do InfluTo, mas expo-iap, react-native-iap e RevenueCat têm código nativo, então faça compras de teste em um development build. A captura automática simplesmente não faz nada no Expo Go, o que é seguro.
Inicialize uma vez, na raiz. Não em uma tela que é montada várias vezes. Chame identifyUser uma vez a cada login, não dentro de um caminho de renderização.
AsyncStorage no seu próprio package.json. Senão, o módulo nativo dele não é vinculado e o SDK não consegue guardar o estado.
Passo 5: teste antes de convidar criadores
Compras em sandbox nunca movimentam dinheiro nem alteram suas estatísticas, então repita o teste quantas vezes quiser:
- 1
Confirme que o SDK se conectou. Depois do primeiro initialize bem-sucedido, Setup & SDK mostra “SDK connected” com a plataforma e a versão do SDK; debug: __DEV__ registra cada passo no log.
- 2
Simule uma compra. Simulate a purchase em Setup & SDK envia uma compra de teste em sandbox pelo pipeline real do InfluTo. Informe um dos seus códigos para ver a resolução; isso nunca conclui uma etapa da configuração.
- 3
Instale por um link de criador. Entre na sua campanha com uma segunda conta de criador, abra o link de indicação em um dispositivo de teste, instale seu development build e abra o app. Digitar o código é o teste mais confiável.
- 4
Faça uma compra em sandbox. Compre com um testador de sandbox ou TestFlight, ou com um testador de licença do Google Play. O Integration log, alternado para Sandbox, mostra a compra atribuída ao seu código.
clearAttribution() redefine o dispositivo para um novo teste.
Ou deixe seu agente de código fazer isso
Trabalha no Claude Code, Codex ou Cursor? Conecte o servidor MCP do InfluTo e peça a integração: o agente associa “expo” a este SDK, escreve os passos acima e consulta influto_integration_status até chegar uma compra de sandbox com atribuição.
SDK de afiliados para React Native: perguntas e respostas.
Existe um SDK de afiliados para React Native?
Sim. @influto/react-native-sdk é um pacote npm com licença MIT (código em github.com/influto/influto-react-native) que adiciona detecção de instalação por indicação, códigos de indicação e atribuição de compras ao iOS e ao Android a partir de uma única base de código. Exige React Native 0.60+ e @react-native-async-storage/async-storage.
Posso ter um programa de indicação em um app Expo?
Sim, no Expo managed e no bare, sem config plugin. O SDK funciona no Expo Go, em development builds e em builds de produção. A captura de compras direto da loja usa expo-iap ou react-native-iap, que exigem uma development build, e não o Expo Go.
Preciso do RevenueCat?
Não. Com o RevenueCat (react-native-purchases), o SDK marca o assinante e o InfluTo lê o webhook do RevenueCat. Sem ele, o InfluTo verifica cada compra diretamente na App Store Server API ou no Google Play. Use apenas um caminho por plataforma.
Como os usuários inserem um código de indicação?
Chame applyCode(code) a partir do seu próprio campo ou use ReferralCodeInput, de @influto/react-native-sdk/ui. Os códigos são limpos de espaços e convertidos para maiúsculas. Um código digitado tem prioridade sobre a correspondência por clique no link e não está sujeito à janela de 72 horas.
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% conforme o 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 acumulam $20.
Lance códigos de indicação na sua próxima versão.
Um pacote npm, um caminho de validação, um depósito reembolsável. $0 por mês; 10% só sobre a receita que os criadores trazem.
Começar grátis