Guia · Capacitor, Ionic, Cordova, PWA
Adicione um programa de afiliados ou de indicação ao seu app Capacitor ou Ionic.
O @influto/web roda onde o seu código rodar, em uma WebView ou em um navegador: Capacitor (Ionic React, Angular e Vue), Cordova, PWAs instalados e Trusted Web Activities. Ele segue o mesmo contrato dos SDKs nativos do InfluTo e acrescenta formas, exclusivas da web, de identificar uma indicação com exatidão.
Atualizado em 1 de novembro de 2026
Em resumo
Instale o @influto/web e, no Capacitor, também @capacitor/device, @capacitor/preferences e @capacitor/app. Chame InfluTo.initialize uma vez, depois que a plataforma estiver pronta, com os adaptadores do Capacitor. Chame listenForCapacitorLaunchUrls(InfluTo) para que os deep links registrem indicações. Depois, use checkAttribution e identifyUser. No Android, entregue o Play Install Referrer ao captureInstallReferrer para uma correspondência exata. Para compras, passe um binding do RevenueCat, como revenueCatCapacitor(Purchases). Sem RevenueCat, passe uma fonte de compras, como capgoNativePurchasesSource para o @capgo/native-purchases. Reserve uma tarde, quase toda dedicada ao lado das compras.
Por que apps WebView conseguem atribuir mais indicações com exatidão
Um app nativo obtém correspondência exata a partir de um código digitado. Um toque que passa pela loja é associado depois. Um app WebView pode receber o próprio código, de três formas:
A URL de abertura. Defina Settings → General → Web app URL, e os links de indicação enviarão para ela os visitantes no desktop (e no celular, quando você não tem página na loja para a plataforma deles), com influto_code e influto_click anexados. O initialize lê os dois e limpa a barra de endereço.
Deep links. listenForCapacitorLaunchUrls(InfluTo) passa ao SDK a URL da inicialização a frio e cada evento appUrlOpen. No Cordova, chame InfluTo.handleLaunchUrl(url).
O Play Install Referrer. Os links do Google Play gerados pelo InfluTo levam o código e o clique no parâmetro referrer do Play. Leia-o na primeira abertura com um plugin de Install Referrer e passe-o ao captureInstallReferrer.
Sem um código transportado, o InfluTo recorre à correspondência por clique no link em até 72 horas, que nunca compara características do dispositivo.
Passo 1: instalar
Adicione o pacote. No Capacitor, três plugins são opcionais, mas recomendados: @capacitor/device para dados do dispositivo, @capacitor/preferences para um armazenamento que sobrevive a redefinições da WebView e @capacitor/app para deep links. Rode npx cap sync depois de adicioná-los. Se algum faltar, o SDK usa os padrões do navegador.
Sem bundler? Carregue a versão para script tag em https://cdn.jsdelivr.net/npm/@influto/web@1/dist/index.global.js e use window.InfluTo. Ela contém só o SDK principal. Os helpers de subcaminho precisam de um bundler.
npm install @influto/web
# Capacitor / Ionic apps (device info, storage, deep links):
npm install @capacitor/device @capacitor/preferences @capacitor/appPasso 2: inicializar uma vez, na hora certa
Chame initialize uma vez, na raiz do app, e aguarde o resultado. Em caso de falha, ele lança um InfluToApiError (status, body): capture o erro, registre-o e siga em frente. A próxima abertura tenta de novo. A tabela abaixo mostra quando chamá-lo em cada runtime.
A chave de API (it_…, em Setup & SDK) vale para desenvolvimento e produção. Guarde-a em um .env.local fora do git, lido pelo seu bundler. Uma inicialização típica no Capacitor, em um app com RevenueCat, na ordem:
import InfluTo from '@influto/web';
import { capacitorAdapters, listenForCapacitorLaunchUrls } from '@influto/web/capacitor';
import { revenueCatCapacitor } from '@influto/web/revenuecat';
import { Purchases } from '@revenuecat/purchases-capacitor';
export async function startInfluTo() {
await Purchases.configure({ apiKey: 'appl_…' }); // RevenueCat apps: configure it first
try {
await InfluTo.initialize({
apiKey: import.meta.env.VITE_INFLUTO_API_KEY,
appVersion: '1.4.0',
...(await capacitorAdapters()),
revenueCat: revenueCatCapacitor(Purchases),
});
} catch (error) {
console.warn('InfluTo initialize failed', error); // retried on the next launch
return;
}
await listenForCapacitorLaunchUrls(InfluTo); // deep links → referral claim
const attribution = await InfluTo.checkAttribution();
const { appUserID } = await Purchases.getAppUserID();
await InfluTo.identifyUser(appUserID);
}| Runtime | Quando chamar initialize |
|---|---|
| Capacitor / Ionic | Ao iniciar o app, depois que a plataforma estiver pronta. Nunca dentro de uma página do Ionic, que pode ficar em cache e ser reaberta |
| Cordova | Depois do deviceready: primeiro use await whenDeviceReady() de @influto/web/cordova e, em seguida, passe ...cordovaAdapters() ao initialize |
| PWA / navegador | No carregamento da página |
Passo 3: registrar com exatidão as instalações pela Play Store
No Android, leia a string do referrer na primeira abertura com @capgo/capacitor-install-referrer ou cordova-play-install-referrer e entregue-a depois do initialize, antes do checkAttribution. Um código obtido mais tarde reabre uma resposta “orgânica” anterior. Uma instalação já atribuída mantém o seu criador.
await InfluTo.captureInstallReferrer(referrer); // the raw referrer string from the plugin
const attribution = await InfluTo.checkAttribution();Passo 4: deixar o usuário digitar um código
applyCode(code) valida um código digitado pelo usuário e o aplica, se for válido. Os códigos têm os espaços removidos e são convertidos em maiúsculas. Um código inválido retorna valid: false com um error_code, como CODE_NOT_FOUND ou CODE_EXPIRED.
Em React e Ionic React, o ReferralCodeInput de @influto/web/react é um formulário simples, sem estilo, que preenche automaticamente um código vindo de um link e o aplica ao enviar. Em Angular, Vue ou sem framework, monte o campo sobre o applyCode.
Passo 5: conectar as compras
O InfluTo só paga comissão sobre compras verificadas pela loja. Escolha um caminho por plataforma:
RevenueCat: passe um binding como revenueCat: revenueCatCapacitor(Purchases) para o @revenuecat/purchases-capacitor 7.5.10+, revenueCatCordova(window.Purchases) para o cordova-plugin-purchases ou revenueCatJs para o purchases-js. Conecte-o antes do checkAttribution, porque o atributo é gravado quando a indicação é encontrada. Gravações que falham são repetidas até 3 vezes.
Direto pela loja: passe um purchaseSource (veja a tabela). Quando o app está configurado como direto pela loja em Settings → Validation, o initialize informa as novas compras e preenche as já existentes, cada uma uma só vez.
No iOS, o modo direto pela loja precisa da transação assinada do StoreKit 2: o capgoNativePurchasesSource a repassa, mas com o cordova-plugin-purchase você precisa conferir se a sua configuração a expõe. No Android, essas fontes não trazem preço. Por isso, informe você mesmo os produtos de compra única, com price e currency, ou eles serão registrados como $0.
Em uma TWA, a Digital Goods API não tem evento de compra. Chame InfluTo.syncExistingPurchases() depois de cada checkout. O digitalGoodsSource busca o preço para você.
| Runtime | Plugin de compras | Fonte |
|---|---|---|
| Capacitor | @capgo/native-purchases | capgoNativePurchasesSource(NativePurchases) de /capacitor |
| Cordova | cordova-plugin-purchase v13 | cordovaPurchaseSource(CdvPurchase.store) de /cordova |
| TWA no Google Play | Digital Goods API (Chrome 101+) | digitalGoodsSource() de /pwa |
Armadilhas de cada plataforma
A maioria das integrações em WebView que dão errado esbarra em um destes pontos:
Armazenamento do Capacitor. Com o @capacitor/preferences instalado, o SDK guarda seu estado nele. O localStorage da WebView é apagado quando androidScheme ou iosScheme muda.
ionic serve. Em um build de desenvolvimento para web, o plugin do RevenueCat para Capacitor é apenas um substituto, então as gravações de atributos não fazem nada. Teste em um dispositivo.
O Cordova bloqueia a API por padrão. Um template novo precisa de uma entrada access origin para https://influ.to no config.xml e de connect-src https://influ.to na Content-Security-Policy. A RevenueCat descontinuou o plugin para Cordova; em um app novo, prefira o Capacitor.
Navegadores e PWAs. Em um navegador ou PWA, sempre passe platform (ios ou android) para reportPurchase; o SDK não tenta adivinhar quando detecta web. Web apps na tela de início do iOS não podem vender compras no app, mas a atribuição continua funcionando.
Passo 6: teste
Compras de teste nunca movimentam dinheiro nem alteram suas estatísticas:
- 1
Confira Configuração e SDK. Depois do primeiro initialize bem-sucedido, aparece “SDK conectado” com a plataforma, o @influto/web e a versão do SDK; debug: true registra cada etapa.
- 2
Simule uma compra. Simular uma compra em Configuração e SDK envia uma compra de teste em sandbox pelo pipeline real da InfluTo. Digite um dos seus códigos para ver como ele é resolvido.
- 3
Rode uma instalação indicada em um dispositivo. Abra o link de indicação de um criador em um dispositivo de teste, instale, abra o app e compre com um testador sandbox, TestFlight ou de licença. O log de integração, no modo Sandbox, mostra a compra atribuída.
clearAttribution() apaga a atribuição, o código e o código de abertura armazenados, para você testar de novo. Com um agente de código conectado por MCP, ele pode fazer essas verificações por você.
SDK de afiliados para Capacitor e Ionic, respondido.
Existe um SDK de afiliados para Capacitor e Ionic?
Sim. O @influto/web no npm, com subpaths para Capacitor, Cordova, PWAs, integração com RevenueCat e React. Não tem dependências e roda em qualquer navegador ou WebView ES2019.
Funciona com Ionic Angular e Ionic Vue?
Sim. O SDK não depende de framework, e Ionic React, Angular e Vue rodam sobre o Capacitor. O campo de código pronto é só para React (@influto/web/react); no Angular ou no Vue, você monta o campo com applyCode.
Dá para atribuir instalações do Google Play com exatidão?
Sim. Os links da InfluTo para o Google Play levam o código no Install Referrer, assinado pelo Play. Leia-o com @capgo/capacitor-install-referrer ou cordova-play-install-referrer e passe-o para captureInstallReferrer antes de checkAttribution.
Quais plugins de compra são compatíveis?
Para compras direto na loja: @capgo/native-purchases no Capacitor, cordova-plugin-purchase v13 no Cordova e a Digital Goods API em um TWA no Google Play. Para RevenueCat: @revenuecat/purchases-capacitor 7.5.10+, @revenuecat/purchases-js 1.4.0+ ou cordova-plugin-purchases, ou qualquer objeto com um método setAttributes.
Funciona em um PWA?
Sim. Defina a URL do app web para que os links de indicação passem o código ao seu app; a atribuição e os códigos digitados funcionam em qualquer navegador. Um TWA no Google Play pode vender pelo Play Billing com digitalGoodsSource(); web apps na tela de início do iOS não podem vender compras no app.
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; a 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 no seu próximo build com Capacitor.
Um pacote npm, um único 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