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