Este tutorial de consejos rápidos le enseñará cómo responder a eventos clave del ciclo de vida de la aplicación, como suspensión, finalización y reanudación. Sigue leyendo para saber más.!
Este breve tutorial explicará cómo ayudar a los usuarios de iOS a poner sus aplicaciones Corona SDK en el fondo del sistema operativo. También demostrará cómo probar el envío de una aplicación en segundo plano desde el simulador de Corona SDK..
Vamos a configurar un proyecto básico. Pon esto en tu archivo main.lua.
----- main.lua ----- - oculta la barra de estado display.setStatusBar (display.HiddenStatusBar) - configura un fondo sólido local background = display.newRect (0, 0, display.contentWidth, display.contentHeight) background: setFillColor (191, 69, 66)
Usaremos un simple archivo config.lua.
application = content = width = 320, height = 480, scale = "letterBox", fps = 30,
Ahora que tenemos un proyecto básico configurado, hablemos de cómo funciona iOS con Corona SDK. Por defecto, el Corona SDK no permite que las aplicaciones se pongan en segundo plano. Más bien, el comportamiento estándar es abandonar la aplicación por completo. Cuando un usuario reanuda una aplicación de corona en pausa, la aplicación se reiniciará por completo a menos que cambiemos la configuración predeterminada. Abra su archivo build.settings (si aún no existe, créelo). Añade esta línea:
UIApplicationExitsOnSuspend = false,
El mío ahora se ve algo como esto ahora:
settings = orientación = default = "portait", support = "portrait", iphone = plist = UIApplicationExitsOnSuspend = false,,
Ahora, cuando un usuario reanude la aplicación, volverá al punto en el que se detuvo. Esto a veces puede romper cosas en el código. Los temporizadores pueden desviarse de la pista y las animaciones pueden congelarse; Por lo tanto, necesitamos una forma de administrar la aplicación cuando se ejecuta en segundo plano. Afortunadamente tenemos acceso al evento "applicationSuspend". iOS le dirá a CoronaSDK cuando la aplicación está suspendida. A su vez, el Corona SDK llamará al evento "applicationSuspend". Probemos esto con nuestra aplicación de demostración..
-- cree una función para manejar todos los eventos del sistema local onSystem = function (evento) si event.type == "applicationSuspend" luego imprima ("en segundo plano") end end - configure un detector de eventos del sistema Runtime: addEventListener ("system", enSistema)
Aquí creamos una función para manejar eventos del sistema. Hay varios eventos de sistema, pero solo nos vamos a preocupar por "applicationSuspend" por ahora. Por lo tanto, si el evento que se pasa es "applicationSuspend", imprimiremos un mensaje agradable al terminal.
Ahora necesitamos añadir la función. enSistema ()
como oyente para todos los eventos del "sistema". Recuerda llamar Tiempo de ejecución: removeEventListener ("system", onSystem)
en tus aplicaciones si estás limpiando una escena. De lo contrario, seguirá esperando los eventos del "sistema"..
Ahora vamos a intentarlo. Colócalo en el simulador. Para probar el fondo de la aplicación en el simulador, vaya a Hardware-> Suspender en el menú. También puedes usar el atajo Comando + Flecha abajo.
Repita el proceso para reanudar la aplicación. Si todo funcionó correctamente, el mensaje "en segundo plano" debería aparecer en el terminal.
También hay otros eventos del sistema que son útiles. Además de los eventos "applicationSuspend", también tenemos acceso a
"applicationStart", "applicationExit" y "applicationResume". Como probablemente pueda adivinar, estos se activan cuando la aplicación se inicia por primera vez, se cierra por completo y se reanuda después de ser suspendida, respectivamente..
Estos eventos son tan simples de manejar como los primeros. Un ejemplo básico de todos los eventos se ve así (vea si puede hacer que todos se activen en el simulador):
-- cree una función para manejar todos los eventos del sistema local onSystem = function (evento) si event.type == "applicationStart" luego imprima ("iniciar") elseif event.type == "applicationExit" luego imprima ("exit") elseif event.type == "applicationSuspend" luego imprime ("suspende") elseif event.type == "applicationResume" luego imprime ("resume") end end - configura un detector de eventos del sistema Tiempo de ejecución: addEventListener ("system", onSystem)
Ahora debería tener una buena idea de cómo manejar la suspensión de aplicaciones en Corona SDK.
Aquí está el código final:
----- main.lua ----- - oculta la barra de estado display.setStatusBar (display.HiddenStatusBar) - configura un fondo sólido local background = display.newRect (0, 0, display.contentWidth, display.contentHeight) background: setFillColor (191, 69, 66): cree una función para manejar todos los eventos del sistema local onSystem = function (evento) si event.type == "applicationStart" luego imprima ("iniciar") elseif event.type == "applicationExit "luego imprima (" salir ") elseif event.type ==" applicationSuspend "luego imprima (" suspende ") elseif event.type ==" applicationResume "luego imprima (" resume ") end end - configure un detector de eventos del sistema Runtime : addEventListener ("sistema", enSistema)