Skip to content

sdk.exit()

Firma

sdk.exit(): void

Cierra el juego de forma limpia:

  1. Si la sesión no fue completada (no se llamó complete()), envía un evento abandoned via sendBeacon para registrar el abandono.
  2. Envía postMessage(ECOTIC_GAME_EXIT) al GameCenter para que cierre el iframe.

No retorna nada ni lanza errores.


Cuándo llamarlo

Llama a exit() cuando:

  • El jugador hace clic en un botón “Salir” o “Cerrar”.
  • La partida termina sin completarse (tiempo agotado, vidas perdidas, etc.).
  • El jugador está abandonando el juego a la mitad.
botonSalir.addEventListener('click', () => {
if (confirm('¿Seguro que quieres salir?')) {
sdk.exit(); // el iframe se cierra
}
});

Uso en beforeunload

Para capturar el cierre de pestaña o navegación:

window.addEventListener('beforeunload', () => {
// Solo si la partida está en curso y no terminada
if (estado === 'jugando') {
sdk.exit();
}
});

¿Qué pasa si el jugador ya completó la partida?

Si ya se llamó a complete(), exit() no envía el evento abandoned (no tendría sentido marcar como abandonada una partida ya completada). Solo envía ECOTIC_GAME_EXIT para cerrar el iframe.


Ejemplo completo con exit

const sdk = EcoticSDK.init({
gameSlug: 'mi-juego',
parentOrigin: 'https://ecotic.cuc.edu.co',
onReady: iniciarMenu,
});
// Botón explícito de salida
document.getElementById('btn-salir').addEventListener('click', () => {
if (juegoEnCurso && !confirm('¿Salir? Perderás el progreso actual.')) return;
sdk.exit();
});
// Salida si el jugador cierra la pestaña mientras juega
window.addEventListener('beforeunload', () => {
if (juegoEnCurso) sdk.exit();
});
// Al terminar normalmente — NO llamar exit() después de complete()
async function ganar() {
await sdk.complete(puntuacionFinal);
// El botón "Cerrar" ahora llama exit() sin enviar abandoned
}

Diferencia entre complete() y exit()

complete()exit()
¿Otorga recompensa?No
¿Cierra el iframe?No (solo el SDK notifica)
¿Envía abandoned?NoSí (si la sesión no fue completada)
Usa fetch o sendBeaconfetchsendBeacon
¿Cuándo usar?La partida terminó exitosamenteEl jugador sale sin terminar