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.
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)
}}
Swift 4:
UIControl().sendAction(#selector(NSXPCConnection.suspend),
to: UIApplication.shared, for: nil)
Pour cela, vous devez utiliser le code suivant
importer Darwin exit (0)
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.
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.