SDK
SDK para Flutter
Añade Traqio a una app de Flutter: el paquete traqio lee el Play Install Referrer en Android, registra en SKAdNetwork en iOS y reenvía los deep links.
traqio es el SDK de Traqio para Flutter: un paquete de Dart con un plugin para Android y otro para iOS. En Android lee el Install Referrer de Google Play para una atribución determinista; en iOS registra las instalaciones en SKAdNetwork. Pone los eventos en cola en shared_preferences, registra las aperturas de la app a partir del ciclo de vida de la app y reenvía los deep links. Sin portapapeles, y sin identificador publicitario — la opción que ofrecen los SDK de iOS, Android y React Native aún no está en este.
Aún no está en pub.dev — acceso anticipado
traqio · versión 0.1.0Los paquetes del SDK aún no están en sus registros públicos. Para integrarlo hoy, pide la build: hello@traqio.appNivel de prueba: Analizado y tipado en CI; la parte nativa compila en una app anfitriona.Requisitos#
- Dart 3, Flutter 3.
- Android 5.0 (API 21) o posterior; iOS 13 o posterior.
Configuración#
Añade el paquete#
flutter pub add traqioHasta que el paquete esté en pub.dev, referencia por ruta la copia que te enviamos:
# pubspec.yaml — the package you received, until it is on pub.dev dependencies: traqio: path: ../traqioInicializa en main()#
import 'package:flutter/widgets.dart'; import 'package:traqio/traqio.dart'; Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Traqio.init(sdkKey: 'YOUR_SDK_KEY', endpoint: 'https://api.traqio.app'); runApp(const MyApp()); }initinforma de la instalación en el primer arranque, resuelve el deep link diferido y registra la apertura de la app. Esperarlo con await antes derunAppgarantiza que no se pierda la URL que abrió la app.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('signup'); Traqio.track('purchase', value: 9.99, currency: 'EUR');Nombres con los que Meta y TikTok pueden optimizar: Nombres de eventos.
Declara el endpoint de SKAdNetwork#
<key>NSAdvertisingAttributionReportEndpoint</key> <string>https://api.traqio.app</string>
Deep links#
final unsubscribe = Traqio.onDeepLink((link) {
if (link.deepLink != null) router.go(link.deepLink!);
});
// The install's deferred link, or null:
final deferred = await Traqio.getDeferredDeepLink();El plugin reenvía las URL por sí solo y nunca las consume: tu router las sigue recibiendo todas. Una app iOS con el ciclo de vida UIScene no recibe los callbacks del app delegate que escucha el plugin, y reenvía ella misma las URL:
// iOS apps on the UIScene lifecycle only: forward the URL yourself
Traqio.handleUrl(url.toString());Consentimiento#
await Traqio.setConsent(granted); // sharing with ad networks, not measurementAPI#
| Llamada | Qué hace |
|---|---|
init(sdkKey:, endpoint:, userId:, deepLinking: true, consent:) | Arranca una vez. |
track(name, value:, currency:) | Pone un evento en cola; lotes de 20, reintentados con backoff. |
setUserId(id) | Asocia tu id de usuario a partir de ahora. |
setConsent(granted) | Guarda el consentimiento del usuario para compartir con redes publicitarias. |
onDeepLink(listener) | Se suscribe; devuelve la función para cancelar la suscripción. |
getDeferredDeepLink() | El enlace diferido de la instalación, o null. |
handleUrl(url) | Resuelve una URL que llegó a la app por otra vía. |
Aún no está en este SDK#
- Valores de conversión de iOS y Apple Ads. Las instalaciones se registran en SKAdNetwork, pero no se define ningún valor de conversión ni se informa de ningún token de Apple Ads.
- Reintentos del Install Referrer. El referrer se lee una vez en el primer arranque; si Google Play no responde, la instalación se registra como orgánica.
- Ids de transacción de compras, ingresos publicitarios de AdMob, borrado desde la app. Usa RevenueCat para las compras y el borrado del lado del servidor.
Pruebas hasta ahora
Preguntas frecuentes#
- ¿El SDK de Flutter define los valores de conversión de SKAdNetwork?
- Todavía no. En iOS registra cada instalación en SKAdNetwork, así que las instalaciones procedentes de redes publicitarias se atribuyen mediante los postbacks de Apple, pero no define los valores de conversión según tu mapeo, así que esos postbacks no llevan ninguna señal de ingresos. Los SDK de React Native e iOS nativo sí los definen.
- ¿Tengo que reenviar los deep links yo mismo?
- Normalmente no. El plugin reenvía el intent de arranque y los nuevos intents en Android, y los universal links y las aperturas de URL que recibe el app delegate en iOS. Solo una app iOS con el ciclo de vida UIScene pasa ella misma las URL a Traqio.handleUrl.