Mobile Kit
Driver para ejecutar una App de Iskra en plataformas moviles (iOS / Android) sobre el bridge de Tauri. Comparte el mismo modelo de ciclo de vida que el resto de los Drivers del framework.
Instalacion
Sección titulada «Instalacion»El paquete ya forma parte del monorepo. Para usarlo en un template o app, declaralo como dependencia de workspace:
{ "dependencies": { "@iskra-bun/core": "workspace:*", "@iskra-bun/mobile-kit": "workspace:*", "@tauri-apps/api": "^2.0.0" }}bun installInicio Rapido
Sección titulada «Inicio Rapido»MobileDriver implementa la interfaz Driver del Core. Se registra en la App y participa del ciclo de vida init → start → stop:
import { App } from '@iskra-bun/core';import { MobileDriver } from '@iskra-bun/mobile-kit';
const app = new App({ name: 'MiAppMovil' });
app.register(new MobileDriver());
await app.start();// → "Initializing Mobile Driver..."// → "Mobile Driver started."Al llamar app.stop() el driver libera sus recursos:
await app.stop();// → "Mobile Driver stopped."La clase MobileDriver
Sección titulada «La clase MobileDriver»El driver expone tres metodos del ciclo de vida. No requiere configuracion adicional para arrancar:
import type { Driver, App } from '@iskra-bun/core';
export class MobileDriver implements Driver { name = 'MobileDriver';
async init(app: App) { /* guarda referencia a la App */ } async start() { /* registra listeners moviles: deep links, push, etc. */ } async stop() { /* limpieza */ }}| Metodo | Cuando se ejecuta | Proposito |
|---|---|---|
init(app) |
En app.init() / app.start() |
Recibe la App y guarda la referencia |
start() |
En app.start(), tras init |
Punto donde se enganchan eventos nativos |
stop() |
En app.stop() |
Cierra listeners y libera recursos |
Deteccion de Plataforma
Sección titulada «Deteccion de Plataforma»Un mismo codebase puede registrar el MobileDriver solo cuando corre en un entorno movil de Tauri. Detecta el entorno antes de registrar:
import { App } from '@iskra-bun/core';import { MobileDriver } from '@iskra-bun/mobile-kit';
const app = new App({ name: 'MiApp' });
const isTauri = typeof window !== 'undefined' && '__TAURI__' in window;
if (isTauri) { app.register(new MobileDriver());}
await app.start();Para una app universal (escritorio + movil) se registran ambos drivers y cada uno actua segun su entorno:
import { App } from '@iskra-bun/core';import { DesktopDriver } from '@iskra-bun/desktop-kit';import { MobileDriver } from '@iskra-bun/mobile-kit';
const app = new App({ name: 'Universal' });
app.register(new DesktopDriver());app.register(new MobileDriver());
await app.start();Eventos Moviles
Sección titulada «Eventos Moviles»El start() del driver es el lugar donde se enganchan los eventos nativos (deep links, push notifications) al bus de la App. Tu logica de negocio los escucha con app.on(...):
// Emitido desde el bridge nativo (Tauri) hacia el bus de la Appapp.on('mobile:deeplink', async (ctx) => { app.logger.info({ url: ctx.payload.url }, 'Deep link recibido');});
app.on('mobile:push', async (ctx) => { app.logger.info({ notification: ctx.payload }, 'Push recibido');});Cada handler recibe un Context con app, logger, payload y reply, igual que el resto del framework.
Integracion con Tauri
Sección titulada «Integracion con Tauri»mobile-kit depende de @tauri-apps/api. Desde el start() del driver se invocan comandos nativos definidos en la capa Rust de Tauri:
import { invoke } from '@tauri-apps/api/core';
// Dentro de un metodo del driver o de un handler de eventoconst battery = await invoke<number>('get_battery_level');app.logger.info({ battery }, 'Nivel de bateria');Ejemplo Completo
Sección titulada «Ejemplo Completo»import { App } from '@iskra-bun/core';import { MobileDriver } from '@iskra-bun/mobile-kit';
const app = new App({ name: 'NotasMovil' });
app.register(new MobileDriver());
app.on('mobile:deeplink', async (ctx) => { app.logger.info({ url: ctx.payload.url }, 'Abriendo desde deep link');});
async function main() { await app.start(); app.logger.info('App movil lista');}
main().catch((err) => app.logger.error({ err }, 'Fallo al arrancar'));Para un proyecto multiplataforma listo para usar, revisa el template universal-app. Para el ciclo de vida de los Drivers, consulta la documentacion de arquitectura y el Core.