SDK
SDK para Capacitor
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, 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.
Disponible en npm
@traqio/capacitor · versión 0.1.0Nivel de prueba: Analizado y tipado en CI; la parte nativa compila en una app anfitriona.Requisitos#
@capacitor/core5 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#
npm install @traqio/capacitor @capacitor/preferences @capacitor/app npx cap syncInicializa con almacenamiento#
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 ahandleUrl. Solo las URL de seguimiento de Traqio salen del dispositivo.Registra eventos y define el id de usuario#
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.
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
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.