Corona SDK gestione della sospensione delle applicazioni

Questo tutorial rapido ti insegnerà come rispondere agli eventi chiave del ciclo di vita delle applicazioni come sospensione, interruzione e ripresa. Continuate a leggere per saperne di più!


Questo breve tutorial spiegherà come aiutare gli utenti iOS a mettere le tue app Corona SDK sullo sfondo del sistema operativo. Mostrerà anche come testare l'invio di un'applicazione in background dal simulatore Corona SDK.

Diamo un progetto di base istituito. Metti questo nel tuo file main.lua.

 ----- main.lua ----- - nascondi la barra di stato display.setStatusBar (display.HiddenStatusBar) - imposta uno sfondo solido locale background = display.newRect (0, 0, display.contentWidth, display.contentHeight) background: setFillColor (191, 69, 66)

Useremo un semplice file config.lua.

 application = content = width = 320, height = 480, scale = "letterBox", fps = 30,

Ora che abbiamo impostato un progetto di base, parliamo di come funziona iOS con il Corona SDK. Per impostazione predefinita, Corona SDK non consente alle applicazioni di essere messe in background. Piuttosto, il comportamento standard è quello di chiudere completamente l'applicazione. Quando un utente riprende un'app Corona sospesa, l'app verrà riavviata completamente a meno che non vengano modificate le impostazioni predefinite. Apri il tuo file build.settings (se non esiste ancora, crealo). Aggiungi questa riga:

 UIApplicationExitsOnSuspend = false,

Il mio ora sembra qualcosa del genere ora:

 settings = orientation = default = "portait", supportato = "portrait", iphone = plist = UIApplicationExitsOnSuspend = false,,

Ora, quando un utente riprende l'applicazione, ritornerà al punto in cui era stato interrotto. Questo a volte può spezzare le cose nel codice. I timer possono andare fuori strada e le animazioni possono bloccarsi; quindi, abbiamo bisogno di un modo per gestire l'applicazione quando è in esecuzione in background. Fortunatamente abbiamo accesso all'evento "applicationSuspend". iOS comunicherà a CoronaSDK quando l'app è sospesa. A sua volta, Corona SDK chiamerà l'evento "applicationSuspend". Proviamo con la nostra app demo.

 -- creare una funzione per gestire tutti gli eventi di sistema locali onSystem = function (event) if event.type == "applicationSuspend" quindi print ("backgrounded") end end - imposta un listener di eventi di sistema Runtime: addEventListener ("system", onSystem)

Qui creiamo una funzione per gestire gli eventi di sistema. Ci sono diversi eventi di sistema, ma per ora ci preoccuperemo solo di "applicationSuspend". Quindi, se l'evento che viene passato è "applicationSuspend", allora stamperemo un bel messaggio al terminale.

Ora dobbiamo aggiungere la funzione onSystem () come ascoltatore per tutti gli eventi di "sistema". Ricordati di chiamare Runtime: removeEventListener ("system", onSystem) nelle tue app se stai ripulendo una scena. Altrimenti continuerà ad aspettare eventi "di sistema".

Ora proviamolo. Caricalo nel simulatore. Per verificare lo sfondo dell'applicazione nel simulatore, vai su Hardware-> Sospendi nel menu. Puoi anche usare la scorciatoia Comando + Freccia giù.

Ripeti il ​​processo per riprendere l'app. Se tutto funziona correttamente, il messaggio "backgrounded" dovrebbe apparire nel terminale.

Ci sono anche altri eventi di sistema che sono utili. Oltre agli eventi "applicationSuspend", abbiamo anche accesso a
"applicationStart", "applicationExit" e "applicationResume". Come puoi probabilmente intuire, questi accendono quando l'applicazione si avvia per la prima volta, esce completamente e riprende dopo essere stata sottosopra, rispettivamente.

Questi eventi sono altrettanto semplici da gestire come il primo. Un esempio di base di tutti gli eventi è simile a questo (vedi se riesci a farli sparare tutti nel simulatore):

 -- creare una funzione per gestire tutti gli eventi di sistema locali onSystem = function (event) if event.type == "applicationStart" quindi stampare ("start") elseif event.type == "applicationExit" quindi stampare ("exit") elseif event.type == "applicationSuspend" quindi stampa ("suspend") elseif event.type == "applicationResume" quindi stampa ("resume") end end - imposta un listener di eventi di sistema Runtime: addEventListener ("system", onSystem)

Ora dovresti avere una buona idea di come gestire la sospensione dell'applicazione nel Corona SDK.

Ecco il codice finale:

 ----- main.lua ----- - nascondi la barra di stato display.setStatusBar (display.HiddenStatusBar) - imposta uno sfondo solido locale background = display.newRect (0, 0, display.contentWidth, display.contentHeight) background: setFillColor (191, 69, 66): crea una funzione per gestire tutti gli eventi di sistema locali onSystem = function (event) if event.type == "applicationStart" quindi stampa ("start") elseif event.type == "applicationExit "quindi stampa (" exit ") elseif event.type ==" applicationSuspend "quindi stampa (" suspend ") elseif event.type ==" applicationResume "quindi stampa (" resume ") end end - imposta un listener di eventi di sistema Runtime : addEventListener ("system", onSystem)