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
activate()prepara el módulo al activarlo.contributions(context)devuelve los botones, secciones o ajustes que deben aparecer en la pantalla actual.dispatch(action, payload, context)atiende la acción del usuario. Puede abrir un formulario o cerrar el panel.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'}.
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-importedycontext-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-panelcierra 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.