Corona SDK verwerking Opschorting van toepassingen

In deze quicktip-zelfstudie leert u hoe u kunt reageren op belangrijke levenscyclusgebeurtenissen van applicaties, zoals opschorting, beëindiging en hervatting. Lees verder voor meer informatie!


Deze korte tutorial legt uit hoe je iOS-gebruikers kunt helpen om je Corona SDK-apps in de achtergrond van het besturingssysteem te plaatsen. Het zal ook laten zien hoe het testen van het verzenden van een applicatie naar de achtergrond van de Corona SDK-simulator kan worden getest.

Laten we een basisproject opzetten. Plaats dit in uw main.lua-bestand.

 ----- main.lua ----- - verberg de statusbalk display.setStatusBar (display.HiddenStatusBar) - stel een effen achtergrond in op de lokale achtergrond = display.newRect (0, 0, display.contentWidth, display.contentHeight) background: setFillColor (191, 69, 66)

We zullen een eenvoudig config.lua-bestand gebruiken.

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

Nu we een basisproject hebben opgezet, laten we het hebben over hoe iOS werkt met de Corona SDK. Standaard staat de Corona SDK niet toe dat toepassingen op de achtergrond worden geplaatst. Integendeel, het standaardgedrag is om de applicatie helemaal te verlaten. Wanneer een gebruiker een gepauzeerde corona-app hervat, wordt de app volledig opnieuw gestart, tenzij we de standaardinstellingen wijzigen. Open uw build.settings bestand (als het nog niet bestaat, maak het dan). Voeg deze regel toe:

 UIApplicationExitsOnSuspend = false,

De mijne ziet er nu ongeveer zo uit:

 instellingen = orientation = default = "portait", supported = "portrait", iphone = plist = UIApplicationExitsOnSuspend = false,,

Wanneer een gebruiker de applicatie opnieuw start, keert hij terug naar het punt waarop hij is gestopt. Dit kan soms dingen in de code breken. Timers kunnen uit de weg lopen en animaties kunnen bevriezen; dus we hebben een manier nodig om de applicatie te beheren wanneer deze op de achtergrond draait. Gelukkig hebben we toegang tot de "applicationSuspend" -gebeurtenis. iOS vertelt CoronaSDK wanneer de app is opgeschort. De Corona SDK roept op zijn beurt de "applicationSuspend" -gebeurtenis aan. Laten we dit proberen met onze demo-app.

 -- maak een functie om alle systeemgebeurtenissen lokaal onSystem = function (event) af te handelen als event.type == "applicationSuspend" en print ("backgrounded") einde - setup een systeemgebeurtenislistener Runtime: addEventListener ("systeem", onSystem)

Hier creëren we een functie voor het afhandelen van systeemgebeurtenissen. Er zijn verschillende systeemgebeurtenissen, maar we maken ons voorlopig alleen maar zorgen over "applicationSuspend". Dus als de gebeurtenis die wordt doorgegeven "applicationSuspend" is, dan zullen we een leuk bericht naar de terminal afdrukken.

Nu moeten we de functie toevoegen onSystem () als luisteraar voor alle "systeem" -evenementen. Vergeet niet om te bellen Runtime: removeEventListener ("system", onSystem) in je apps als je een scène opruimt. Anders blijft het wachten op "systeem" -gebeurtenissen.

Laten we het nu proberen. Laad het in de simulator. Om de achtergrond van de toepassing in de simulator te testen, gaat u naar Hardware-> Onderbreken in het menu. U kunt ook de sneltoets Command + Pijl-omlaag gebruiken.

Herhaal het proces om de app te hervatten. Als alles goed werkte, zou het bericht "backgrounded" in de terminal moeten verschijnen.

Er zijn ook andere systeemgebeurtenissen die nuttig zijn. Bovenop de "applicationSuspend" -gebeurtenissen hebben we ook toegang tot
"applicationStart", "applicationExit" en "applicationResume". Zoals je waarschijnlijk wel kunt raden, worden deze geactiveerd wanneer de toepassing voor de eerste keer wordt gestart, wordt deze volledig afgesloten en wordt deze hervat nadat ze zijn supsended, respectievelijk.

Deze evenementen zijn net zo eenvoudig te beheren als de eerste. Een basisvoorbeeld van alle evenementen ziet er als volgt uit (zie of je ze allemaal kunt laten vuren in de simulator):

 -- maak een functie om alle systeemgebeurtenissen lokaal onSystem = function (event) af te handelen als event.type == "applicationStart" en print ("start") elseif event.type == "applicationExit" print dan ("exit") elseif event.type == "applicationSuspend" en print ("suspend") elseif event.type == "applicationResume" then print ("resume") end end - setup een systeemgebeurtenislistener Runtime: addEventListener ("system", onSystem)

Nu moet u een goed idee hebben van hoe u opschorting van toepassingen in de Corona SDK moet aanpakken.

Hier is de definitieve code:

 ----- main.lua ----- - verberg de statusbalk display.setStatusBar (display.HiddenStatusBar) - stel een effen achtergrond in op de lokale achtergrond = display.newRect (0, 0, display.contentWidth, display.contentHeight) background: setFillColor (191, 69, 66) - maak een functie om alle systeemevenementen lokaal onSystem = function (event) af te handelen als event.type == "applicationStart" en print ("start") elseif event.type == "applicationExit "print dan (" exit ") elseif event.type ==" applicationSuspend "en print (" suspend ") elseif event.type ==" applicationResume "then print (" resume ") end end - stel een systeemgebeurtenis luisteraar in Runtime : addEventListener ("system", onSystem)