Skip to content

Eventi

La piattaforma emette CustomEvent del browser su window. Tutti gli eventi hanno il prefisso mindtraining: e il payload è sempre disponibile in event.detail.


mindtraining:ready

Viene emesso quando: lo script ha finito di caricarsi e la API globale MindtrainingPlatform è disponibile su window.

Quando usarlo: è l'hook consigliato per chiamare init. Ascoltando questo evento eviti race condition tra il caricamento dello script e l'esecuzione del tuo codice di inizializzazione.

event.detail

CampoTipoDescrizione
apiobjectRiferimento a window.MindtrainingPlatform
js
window.addEventListener('mindtraining:ready', function (event) {
  // event.detail.api === window.MindtrainingPlatform
  MindtrainingPlatform.init('mindtraining', {
    viewer: { loggedIn: false },
  })
})

Script già caricato? Se registri il listener dopo che lo script è già stato eseguito, l'evento non verrà emesso di nuovo. Usa questo pattern di guardia:

js
function initializeMindtraining() {
  MindtrainingPlatform.init('mindtraining', {
    viewer: { loggedIn: false },
  })
}

if (window.MindtrainingPlatform) {
  initializeMindtraining()
} else {
  window.addEventListener('mindtraining:ready', initializeMindtraining, { once: true })
}

mindtraining:config

Viene emesso quando: la configurazione della piattaforma viene aggiornata, sia dopo la chiamata iniziale a init() sia dopo qualsiasi updateConfig() successivo.

Quando usarlo: usalo per reagire a cambi di configurazione provenienti dall'esterno della piattaforma, ad esempio per sincronizzare lo stato della tua UI.

event.detail

L'oggetto PlatformInitConfig normalizzato completo al momento del cambiamento.

CampoTipoDescrizione
viewerobjectImpostazioni correnti del viewer/utente
viewer.userIdstring | nullID dell'utente attivo
viewer.loggedInbooleanSe l'utente è autenticato
viewer.subscribedbooleanSe l'utente ha un abbonamento attivo
uiobjectImpostazioni correnti di UI
ui.mode'web' | 'app'Modalità di rendering
ui.actionsobjectCallback delle azioni registrate
accessobjectRegole di accesso correnti per tipo di gioco
js
window.addEventListener('mindtraining:config', function (event) {
  const config = event.detail

  console.log('Utente autenticato:', config.viewer?.loggedIn)
  console.log('Utente abbonato:', config.viewer?.subscribed)
  console.log("Regole di accesso attive:", config.access?.games)
})

Eventi di gioco e navigazione

I seguenti eventi vengono emessi durante il gameplay e la navigazione. Usali per analytics, tracking, integrazioni host e osservabilità.


mindtraining:game:loaded

Viene emesso quando: una sessione o schermata di gioco è pronta all'interazione.

Quando usarlo: usalo per tracciare pageview interne del gioco, misurare quali giochi vengono davvero caricati o attivare logica host in base al tipo di gioco.

event.detail

CampoTipoDescrizione
gameTypestringTipo di gioco (es. crossword, sudoku)
gameIdstringIdentificatore univoco del gioco
variantstringVariante del gioco (es. default, mini)
routestringPercorso interno
sourcestringOrigine del gioco (es. today, archive)
js
window.addEventListener('mindtraining:game:loaded', function (event) {
  Analytics.track('mindtraining_game_loaded', event.detail)
})

mindtraining:game:playing

Viene emesso quando: l'utente inizia a interagire davvero con il gioco (per esempio, prima mossa o primo input).

Quando usarlo: usalo per distinguere tra un gioco caricato e un gioco effettivamente giocato, misurare l'attivazione o tracciare l'engagement.

event.detail

CampoTipoDescrizione
gameTypestringTipo di gioco
gameIdstringIdentificatore univoco del gioco
variantstringVariante del gioco
startedAtstringTimestamp ISO 8601 di inizio
js
window.addEventListener('mindtraining:game:playing', function (event) {
  Analytics.track('mindtraining_game_playing', event.detail)
})

mindtraining:game:completed

Viene emesso quando: l'utente completa con successo un gioco.

Quando usarlo: usalo per funnel completi, analisi della difficoltà o ranking/gamification lato host.

event.detail

CampoTipoDescrizione
gameTypestringTipo di gioco
gameIdstringIdentificatore univoco del gioco
variantstringVariante del gioco
completedAtstringTimestamp ISO 8601 di completamento
durationMsnumberDurata della sessione in millisecondi
scorenumberPunteggio finale (se applicabile)
js
window.addEventListener('mindtraining:game:completed', function (event) {
  Analytics.track('mindtraining_game_completed', event.detail)
})

mindtraining:game:abandoned

Viene emesso quando: l'utente abbandona una sessione attiva senza completarla.

Quando usarlo: usalo per rilevare attriti, misurare l'abbandono per gioco o variante o migliorare i flussi di retention.

event.detail

CampoTipoDescrizione
gameTypestringTipo di gioco
gameIdstringIdentificatore univoco del gioco
variantstringVariante del gioco
durationMsnumberTempo speso prima dell'abbandono
progressnumberProgresso (0–1) al momento dell'abbandono
js
window.addEventListener('mindtraining:game:abandoned', function (event) {
  Analytics.track('mindtraining_game_abandoned', event.detail)
})

mindtraining:game:state:saved

Viene emesso quando: lo stato del gioco viene persistito (ad esempio per la funzionalità “continua a giocare”).

Quando usarlo: usalo per tracciare retention, flussi di ripresa o verificare che il salvataggio dello stato funzioni correttamente.

event.detail

js
window.addEventListener('mindtraining:game:state:saved', function (event) {
  Analytics.track('mindtraining_game_state_saved', event.detail)
})

mindtraining:access:blocked

Viene emesso quando: la piattaforma rileva che una superficie (gioco di oggi, archivio, ecc.) è bloccata per l'utente.

Quando usarlo: usalo per attivare paywall contestuali, misurare domanda insoddisfatta o personalizzare i messaggi host.

event.detail

js
window.addEventListener('mindtraining:access:blocked', function (event) {
  Analytics.track('mindtraining_access_blocked', event.detail)
  if (event.detail.blockedReason === 'subscription_required') {
    Paywall.show({ context: 'game_archive' })
  }
})

mindtraining:route:changed

Viene emesso quando: cambia la route interna della piattaforma (per esempio, navigazione all'interno della SPA).

Quando usarlo: usalo per pageview virtuali o per sincronizzare l'analytics con la navigazione interna della piattaforma.

event.detail

js
window.addEventListener('mindtraining:route:changed', function (event) {
  Analytics.track('mindtraining_route_changed', event.detail)
})

mindtraining:pageview

Viene emesso quando: la piattaforma registra una vista navigabile rilevante per l'analytics.

Quando usarlo: usalo per il tracciamento delle pageview, il reporting per sezione e tipo di gioco o l'attribuzione della navigazione interna.

event.detail

Client integration documentation maintained in-repo.