Skip to content

Interceptação de navegação ​

Todos os sites herdam o callback opcional ui.actions.navigate, que recebe uma solicitação serializável antes da navegação do SDK, nos modos web e app.

Retorne handled quando o host assumir ou cancelar a solicitação; continue para executar o comportamento do SDK. Promessas são aceitas e aguardadas. Apenas continue permite prosseguir: exceções, rejeições e respostas inválidas cancelam a solicitação e registram um erro. Sem callback, o comportamento existente é preservado.

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
}

Nas rotas internas, url respeita basepath e routing normal/hash/query; path é o caminho do SDK. Superfícies sem rota não têm URL de destino. Voltar usa destination: history, sem url/path, pois o navegador não expõe a URL anterior. fromUrl é a URL absoluta atual.

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

Cobertura e limites ​

São interceptados rotas do SDK, botões de voltar, ajuda, ajustes, arquivos, estatísticas, resultados e ações dos detalhes de conquistas. Botões de links externos e referências do quiz também participam, assim como links nativos comuns na página do SDK, depois dos controles de acesso e do link.

Voltar/Avançar do navegador, recarregamento, entrada direta de URL, downloads, âncoras e cliques modificados ou centrais continuam sob controle do navegador. Login, cadastro, assinatura, APIs de compartilhamento, controles de jogo, confirmações e notificações automáticas de conquistas mantêm seus contratos. Fechar uma notificação é uma ação de superfície.

O callback substitui as notificações internas antigas de openUrl, evitando duplicidade. Links externos e quiz ainda usam openUrl após continue. Acesso e paywall mantêm sua ordem; interceptar não concede acesso.

Decisões pendentes de rotas/superfícies são descartadas quando outra solicitação as substitui. Não há timeout nem continuação automática. Um fluxo composto pode produzir várias intenções. A sincronização interna e a restauração do histórico virtual não geram uma segunda solicitação.

Para abrir uma aba externa no navegador, responda de forma síncrona para preservar a ativação do usuário. Uma ponte nativa pode assumir a solicitação. Não chame recursivamente APIs de navegação do SDK no callback; retorne continue.

Atualização em execução ​

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

Client integration documentation maintained in-repo.