# SDK para Capacitor

URL: https://traqio.app/es/docs/sdks/capacitor
Last updated: 2026-10-22

Añade Traqio a una app Capacitor o Ionic: @traqio/capacitor lee el Play Install Referrer y usa el motor JS común; tu app conecta almacenamiento y ciclo de vida.

`@traqio/capacitor` es el SDK de Traqio para apps de Capacitor e Ionic. Ejecuta el mismo motor JavaScript que el SDK de React Native ([@traqio/core](https://traqio.app/es/docs/sdks/javascript), con su cola, los ids de transacción de la tienda, los ingresos publicitarios de AdMob, el consentimiento y el borrado desde la app) y añade un pequeño plugin nativo: lee el **Install Referrer de Google Play** en Android y, en iOS, registra la instalación en **SKAdNetwork**, define sus valores de conversión e informa del token de **Apple Ads**. Como Capacitor no es React Native, dos cosas que el SDK de React Native hace por sí solo te toca conectarlas a ti: el almacenamiento persistente y el ciclo de vida de la app.

## Requisitos

- `@capacitor/core` 5 o posterior. El plugin de Android se compila contra Capacitor 6.
- `@capacitor/preferences` (almacenamiento) y `@capacitor/app` (ciclo de vida y URL).
- Android 5.1 (API 22) o posterior; iOS 13 o posterior (atribución de Apple Ads a partir de iOS 14.3).

## Configuración

### Instala los paquetes

```bash
npm install @traqio/capacitor @capacitor/preferences @capacitor/app
npx cap sync
```

### Inicializa con almacenamiento

```ts
import { App } from "@capacitor/app";
import { Preferences } from "@capacitor/preferences";
import { Traqio, getNativeBridge } from "@traqio/capacitor";

// Persistence is what makes the install fire exactly once — Capacitor has no default.
const storage = {
  getItem: async (key: string) => (await Preferences.get({ key })).value,
  setItem: (key: string, value: string) => Preferences.set({ key, value }),
};

await Traqio.init({
  sdkKey: "YOUR_SDK_KEY",
  endpoint: "https://api.traqio.app",
  native: getNativeBridge(),
  storage,
});

// Capacitor has no React Native AppState: wire the lifecycle and the URLs yourself.
App.addListener("appStateChange", ({ isActive }) => (isActive ? Traqio.appOpened() : Traqio.flush()));
App.addListener("appUrlOpen", ({ url }) => void Traqio.handleUrl(url));
```

> **No te saltes el adaptador de almacenamiento** Sin él, el SDK no puede recordar que la instalación ya se informó: muestra una advertencia en la consola y vuelve a informarla en cada arranque.

### Conecta el ciclo de vida y las URL

Las dos últimas líneas del fragmento anterior: `appOpened()` cuando la app vuelve al primer plano (con un debounce de 30 minutos de sesión, así que llámalo en cada reanudación), `flush()` cuando sale, y cada URL que abre la app a `handleUrl`. Solo las URL de seguimiento de Traqio salen del dispositivo.

### Registra eventos y define el id de usuario

```ts
Traqio.setUserId(user.id); // after sign-in — same id as RevenueCat's app_user_id
Traqio.track("purchase", { value: 9.99, currency: "EUR", transactionId: purchase.transactionId });
```

La API completa (`trackAdRevenue`, `setConsent`, `forgetMe`, `getDeferredDeepLink`) está en la [referencia de la API de JavaScript](https://traqio.app/es/docs/sdks/javascript#reference).

## Aún no está en este SDK

- **Reintentos del Install Referrer.** El referrer se lee una vez; si Google Play no responde en el primer arranque, la instalación se registra como orgánica.

> **Pruebas hasta ahora** El TypeScript se comprueba, se compila y se prueba en CI. El código nativo del plugin, de iOS y de Android, no se compila en CI, y el plugin aún no se ha ejecutado dentro de una app de Capacitor en producción.

## Preguntas frecuentes

**¿Por qué el SDK de Capacitor necesita un adaptador de almacenamiento?**
El SDK debe recordar que ya informó de la instalación y conservar los eventos en cola entre reinicios. En React Native encuentra AsyncStorage por sí solo; Capacitor no tiene un equivalente que pueda dar por sentado, así que se lo pasas tú: unas pocas líneas sobre @capacitor/preferences. Sin él, la instalación se informa de nuevo en cada arranque.

**¿El SDK de Capacitor atribuye las instalaciones en iOS?**
Sí, igual que el SDK de React Native. El plugin de iOS registra cada instalación en SKAdNetwork al cargarse, define los valores de conversión a partir del mapping publicado en la consola a medida que llegan eventos con valor, e informa del token de Apple Ads a partir de iOS 14.3, que el servidor resuelve con Apple. Sin solicitud de seguimiento, y sin IDFA — la opción de identificador publicitario del SDK de React Native aún no está en este plugin.
