sdk.exit()
Firma
sdk.exit(): voidCierra el juego de forma limpia:
- Si la sesión no fue completada (no se llamó
complete()), envía un eventoabandonedviasendBeaconpara registrar el abandono. - 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 salidadocument.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 juegawindow.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? | Sí | No |
| ¿Cierra el iframe? | No (solo el SDK notifica) | Sí |
| ¿Envía abandoned? | No | Sí (si la sesión no fue completada) |
Usa fetch o sendBeacon | fetch | sendBeacon |
| ¿Cuándo usar? | La partida terminó exitosamente | El jugador sale sin terminar |