Saltar al contenido
Nelkano Emulador multisistema

SDK de Nelkano

Cómo funciona un módulo

El archivo principal del módulo exporta createModule(host). host reúne las funciones del SDK: consultar juegos, guardar datos o actuar sobre una partida, entre otras.

Mostrar un botón y responder al pulsarlo

  1. activate() prepara el módulo al activarlo.
  2. contributions(context) devuelve los botones, secciones o ajustes que deben aparecer en la pantalla actual.
  3. dispatch(action, payload, context) atiende la acción del usuario. Puede abrir un formulario o cerrar el panel.
  4. deactivate() libera los recursos al desactivarlo.

Por ejemplo, un módulo de notas añade un botón a la ficha del juego. La acción lee su nota y devuelve un formulario. Al guardar, escribe el dato y devuelve {kind:'close-panel'}.

Image removed.
Del botón a la acción del módulo.

Saber desde dónde se llama al módulo

context.surface identifica la pantalla. El contexto puede incluir también gameId, systemId, session y selection. En Biblioteca, selection contiene los juegos seleccionados; en Ajustes puede no haber ningún juego abierto.

Para actuar sobre una partida, usa la sesión recibida en esa acción. Su id y generation identifican esa apertura del juego. Si la partida cambia, la app rechaza la referencia anterior.

Actualizar los datos cuando cambian

Implementa onEvent(event) para recibir avisos:

  • data-changed: han cambiado datos.
  • hooks-changed: ha cambiado una integración entre módulos.
  • library-imported y context-changed: avisos adicionales de Android.

Los eventos de partida y guardados se describen en Emulación. Lee los datos cuando los necesites y responde a sus avisos, sin volver a consultarlos continuamente.

Prueba los cambios de sesión en la app. Studio reconstruye el módulo al recargar y no reproduce todos los detalles de su cierre en Android.

Mantener la interfaz al día

contributions(context) debe describir la interfaz usando el contexto y tus datos. Guarda los cambios en las acciones o los eventos: Nelkano puede reutilizar las contribuciones ya calculadas entre repintados.

  • Una acción actualiza las contribuciones de su módulo.
  • Los cambios de biblioteca, guardados, cuenta, idioma o ganchos actualizan también los módulos afectados.
  • close-panel cierra el formulario después de actualizar contribuciones y filtros.
  • Desactivar o desinstalar retira los elementos del módulo.

Mantén breves activate() y contributions(context): pueden ejecutarse durante el arranque. Inicia el trabajo costoso desde una acción del usuario o una tarea.

Atender llamadas de otros módulos

  • onHook(request) responde a un gancho: una integración que otro módulo ha declarado.
  • onService(request) ejecuta un método de un servicio registrado por tu módulo.
  • onProfile(request) valida y normaliza documentos del perfil. Durante esa validación no se puede llamar al SDK.

Ejecutar una tarea en segundo plano

onBackground(event) recibe task-due y, mientras trabaja, connection-changed. Debe funcionar tanto en una instancia nueva, sin pasar por activate(), como en una instancia ya activa.

Studio simula las tareas y entrega sus avisos a onEvent. No utiliza el planificador nativo de Android o escritorio.