Skip to content

Intercepción de navegación ​

Todos los sitios heredan el callback opcional ui.actions.navigate. Recibe una solicitud serializable antes de navegar dentro del SDK y funciona en los modos web y app.

Devolvé handled cuando el host se haga cargo, incluso para cancelar. Devolvé continue para ejecutar el comportamiento del SDK. Se admiten promesas y el SDK espera la respuesta. Solo continue permite continuar: las excepciones, promesas rechazadas y respuestas inválidas cancelan la solicitud y registran un error. Sin callback se conserva el comportamiento existente.

js
MindtrainingPlatform.init('mindtraining', {
  ui: {
    actions: {
      navigate: function (request) {
        if (request.destination === 'statistics') {
          nativeBridge.openStatistics(request)
          return 'handled'
        }
        return 'continue'
      },
    },
  },
})

Contrato ​

ts
type NavigationDecision = 'handled' | 'continue'

type NavigationRequest = {
  kind: 'route' | 'surface' | 'external'
  action: 'push' | 'replace' | 'back' | 'forward' | 'go' | 'open' | 'close'
  destination: string
  path?: string
  url?: string
  fromUrl: string
  surface?: string
  presentation?: string
  gameConfigurationId?: string
  gameType?: string
  variant?: string
  date?: string
  target?: string
}

Para las rutas internas, url respeta basepath y routing normal/hash/query. path es la ruta del history del SDK. Una superficie sin ruta no tiene URL de destino. Volver por history usa destination: history y omite url/path, porque el navegador no expone la URL anterior. fromUrl es la URL absoluta actual.

destination: home, gameEntry, game, archive, statistics, route, history, external; surface: homeArchive, gameArchive, statistics, statisticsOverview, howToPlay, gameSettings, gameCompletion, achievementGameDetail, achievementUnlock.

Cobertura y límites ​

Se interceptan las rutas del SDK, sus botones de volver, ayuda, ajustes, archivo, estadísticas, resultados y acciones del detalle de logros. Los botones de enlaces externos y referencias del quiz también pasan por el callback. Los enlaces nativos normales dentro del límite de página del SDK participan después de los manejadores de acceso y del enlace.

Atrás/Adelante del navegador, recarga, entrada directa de URL, descargas, enlaces a fragmentos y clics modificados o centrales siguen bajo control del navegador. Login, registro, suscripción, APIs de compartir, controles de juego, confirmaciones y avisos automáticos de logros mantienen sus contratos. Cerrar un aviso de logro es una acción de superficie.

El callback tiene prioridad sobre las notificaciones internas antiguas de openUrl, evitando navegación duplicada. Los enlaces externos y el quiz siguen usando openUrl como alternativa al devolver continue. Los controles de acceso y paywall mantienen su orden; interceptar nunca concede acceso.

Las respuestas pendientes de rutas/superficies se descartan si otra solicitud las reemplaza. No hay timeout ni continuación automática. Un flujo compuesto puede tener varias intenciones: cerrar ajustes y luego abrir ayuda, por ejemplo. La sincronización interna del history virtual y la restauración del navegador no generan una segunda solicitud.

Para abrir una pestaña externa desde el navegador, respondé sincrónicamente: una continuación asíncrona puede perder la activación del usuario. El puente nativo puede hacerse cargo. No llames recursivamente a una API de navegación del SDK desde este callback; devolvé continue.

Actualización en ejecución ​

js
MindtrainingPlatform.updateConfig({ ui: { actions: { navigate: () => 'continue' } } })
MindtrainingPlatform.updateConfig({ ui: { actions: { navigate: undefined } } })

Client integration documentation maintained in-repo.