web-dev-qa-db-fra.com

Comment quitter l'application et revenir à l'écran d'accueil dans iOS 8 à l'aide de la programmation Swift

J'essaie de retourner par programme à l'écran d'accueil dans une application iOS8 à l'aide de Swift. Je veux cependant continuer à utiliser l'application en arrière-plan. auriez vous des idées pour faire ça?

Merci d'avance pour l'aide.

15
Dave Tsay

Lorsqu'une application est lancée, le système appelle la fonction UIApplicationMain. parmi ses autres tâches, cette fonction crée un singleton UIApplication object. Ensuite, vous accédez à l'objet en appelant la méthode de la classe sharedApplication.

Pour quitter normalement (la bibliothèque de développeur iOS vous avertit explicitement de ne pas utiliser exit (0) car ce dernier est enregistré comme un blocage), vous pouvez utiliser:

UIControl().sendAction(#selector(URLSessionTask.suspend), to: UIApplication.shared, for: nil)

Par exemple, mon application se ferme lorsque l'utilisateur secoue l'appareil. Donc, dans ViewController.Swift: 

override func motionEnded(motion: UIEventSubtype,
    withEvent event: UIEvent?) {

        if motion == .MotionShake{

            //Comment: to terminate app, do not use exit(0) bc that is logged as a crash.

            UIControl().sendAction(Selector("suspend"), to: UIApplication.sharedApplication(), forEvent: nil)
        }}
30
reinaH

Swift 4:

UIControl().sendAction(#selector(NSXPCConnection.suspend),
                       to: UIApplication.shared, for: nil)
19
aviran

Pour cela, vous devez utiliser le code suivant

 importer Darwin 
 exit (0) 
7
ketan pansheriya

Pour forcer votre application en arrière-plan, vous pouvez lancer légalement une autre application, telle que Safari, via une URL, au premier plan. 

Voir: comment ouvrir une URL dans Swift3

UIApplication.shared.open () (et l'ancien openURL) sont des API publiques documentées.

Si vous définissez la clé de plist exits-on-suspend, l'ouverture d'une autre application via une URL tuera également votre application. L'utilisation de cette clé est une utilisation légale documentée des clés de l'application Plist, disponible pour toute application à utiliser "légalement".

En outre, si votre application, pour une raison impolie, continue d'allouer et de salir de grandes quantités de mémoire en arrière-plan, sans répondre aux avertissements relatifs à la mémoire, le système d'exploitation la supprimera très probablement.

2
hotpaw2

Il n'y a aucun moyen de "retourner par programme à l'écran d'accueil", sauf en cas de plantage, de fermeture du programme ou d'appel d'API non officielle. Apple n'est pas le bienvenu. De plus, les directives d'interface humaine couvrent également ce sujet.

0
tcurdt