Ir para o conteúdo

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-storage

Passo 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:

PacoteO que o SDK faz com ele
react-native-purchasesDefine os atributos influto_code e influto_referral do RevenueCat quando uma indicação é encontrada ou um código é aplicado
expo-iap ou react-native-iapCaptura compras da loja em apps com compra direta (o expo-iap tem prioridade se os dois estiverem instalados)
react-native-device-infoInclui 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. 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. 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. 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. 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