Corona SDK Suspension d'application de manipulation

Ce tutoriel vous expliquera comment réagir aux événements clés du cycle de vie des applications, tels que la suspension, la résiliation et la reprise. Continuez à lire pour en savoir plus!


Ce bref tutoriel expliquera comment aider les utilisateurs iOS à placer vos applications Corona SDK en arrière-plan du système d'exploitation. Il montrera également comment tester l'envoi d'une application en arrière-plan à partir du simulateur Corona SDK..

Mettons en place un projet de base. Mettez ceci dans votre fichier main.lua.

 ----- main.lua ----- - masque la barre d'état display.setStatusBar (display.HiddenStatusBar) - configure un fond d'arrière-plan local solide = display.newRect (0, 0, display.contentWidth, display.contentHeight) background: setFillColor (191, 69, 66)

Nous utiliserons un simple fichier config.lua.

 application = contenu = largeur = 320, hauteur = 480, échelle = "letterBox", fps = 30,

Maintenant que nous avons configuré un projet de base, voyons comment iOS fonctionne avec le SDK Corona. Par défaut, le SDK Corona ne permet pas de placer des applications en arrière-plan. Au lieu de cela, le comportement standard consiste à quitter complètement l'application. Lorsqu'un utilisateur reprend une application Corona en pause, celle-ci redémarre complètement sauf si nous modifions les paramètres par défaut. Ouvrez votre fichier build.settings (s'il n'existe pas encore, créez-le). Ajouter cette ligne:

 UIApplicationExitsOnSuspend = false,

Le mien ressemble maintenant à quelque chose comme ça maintenant:

 settings = orientation = default = "portrait", pris en charge = "portrait", iphone = plist = UIApplicationExitsOnSuspend = false,,

Désormais, lorsqu'un utilisateur reprend l'application, il reviendra au point où il s'est arrêté. Cela peut parfois casser des choses dans le code. Les minuteurs peuvent sortir du circuit et les animations geler; Nous avons donc besoin d'un moyen de gérer l'application lorsqu'elle est exécutée en arrière-plan. Heureusement, nous avons accès à l'événement "applicationSuspend". iOS informera CoronaSDK de la suspension de l'application. À son tour, le SDK Corona appellera l'événement "applicationSuspend". Essayons cela avec notre application de démonstration.

 -- créer une fonction pour gérer tous les événements système locaux onSystem = fonction (événement) si événement.type == "applicationSuspend" puis print ("en arrière-plan") end end - configure un écouteur d'événements système Runtime: addEventListener ("system", onSystem)

Nous créons ici une fonction pour gérer les événements système. Il y a plusieurs événements de système, mais nous allons seulement nous préoccuper de "applicationSuspend" pour l'instant. Donc, si l'événement qui est passé est "applicationSuspend", nous afficherons un joli message au terminal.

Maintenant, nous devons ajouter la fonction onSystem () en tant qu'écouteur pour tous les événements "système". N'oubliez pas d'appeler Durée d'exécution: removeEventListener ("system", onSystem) dans vos applications si vous nettoyez une scène. Sinon, il continuera d'attendre les événements "système".

Maintenant, essayons. Chargez-le dans le simulateur. Pour tester l’arrière-plan d’une application dans le simulateur, sélectionnez Matériel-> Suspendre dans le menu. Vous pouvez également utiliser le raccourci Commande + Flèche Bas.

Répétez le processus pour reprendre l'application. Si tout fonctionne correctement, le message "backgrounded" devrait apparaître dans le terminal.

D'autres événements système sont également utiles. En plus des événements "applicationSuspend", nous avons également accès à
"applicationStart", "applicationExit" et "applicationResume". Comme vous pouvez probablement le deviner, ils se déclenchent lorsque l'application démarre pour la première fois, se ferme complètement et reprend après avoir été suspendue, respectivement.

Ces événements sont aussi simples à gérer que les premiers. Voici un exemple de base de tous les événements (voyez si vous pouvez tous les déclencher dans le simulateur):

 -- créer une fonction pour gérer tous les événements système locaux onSystem = function (événement) si event.type == "applicationStart" puis print ("start") elseif event.type == "applicationExit" puis print ("exit") elseif event.type == "applicationSuspend" puis print ("suspendre") elseif event.type == "applicationResume" puis print ("resume") end end - configure un écouteur d'événements système Runtime: addEventListener ("system", onSystem)

Vous devriez maintenant avoir une bonne idée de la gestion des suspensions d’application dans le SDK Corona..

Voici le code final:

 ----- main.lua ----- - masque la barre d'état display.setStatusBar (display.HiddenStatusBar) - configure un arrière-plan d'arrière-plan solide = display.newRect (0, 0, display.contentWidth, display.contentHeight) background: setFillColor (191, 69, 66) - crée une fonction pour gérer tous les événements système locaux onSystem = function (event) si event.type == "applicationStart" puis print ("start") elseif event.type == "applicationExit "then print (" exit ") elseif event.type ==" applicationSuspend "puis print (" suspendre ") elseif event.type ==" applicationResume "puis print (" resume ") end - configure un écouteur d'événement système Runtime : addEventListener ("système", onSystem)