Skip to content

Interceção de navegação ​

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

Devolva handled quando o host assumir ou cancelar o pedido; continue para executar o comportamento do SDK. As promessas são aceites e aguardadas. Apenas continue permite prosseguir: exceções, rejeições e respostas inválidas cancelam o pedido e registam 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 o URL anterior. fromUrl é o URL absoluto 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 intercetadas rotas do SDK, botões de voltar, ajuda, definições, arquivos, estatísticas, resultados e ações dos detalhes de conquistas. Botões de ligações externas e referências do quiz também participam, assim como ligações nativas normais na página do SDK, após os controlos de acesso e da ligação.

Voltar/Avançar do navegador, recarregamento, entrada direta de URL, transferências, âncoras e cliques modificados ou centrais continuam sob controlo do navegador. Início de sessão, registo, subscrição, APIs de partilha, controlos de jogo, confirmações e notificações automáticas de conquistas mantêm os contratos existentes. Fechar uma notificação é uma ação de superfície.

O callback substitui as notificações internas antigas de openUrl, evitando duplicação. Ligações externas e quiz ainda usam openUrl após continue. Acesso e paywall mantêm a ordem; intercetar não concede acesso.

Decisões pendentes de rotas/superfícies são descartadas quando outro pedido as substitui. Não existe timeout nem continuação automática. Um fluxo composto pode produzir várias intenções. A sincronização interna e o restauro do histórico virtual não geram um segundo pedido.

Para abrir um separador externo no navegador, responda de forma síncrona para preservar a ativação do utilizador. Uma ponte nativa pode assumir o pedido. Não invoque recursivamente APIs de navegação do SDK no callback; devolva 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.