Appearance
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 } } })