iphone - probar - swift apple download
Cómo salir de la aplicación y regresar a la pantalla de inicio en iOS 8 usando la programación Swift (5)
Intento regresar programáticamente a la pantalla de inicio en una aplicación iOS8 usando Swift. Sin embargo, quiero continuar la aplicación ejecutándose en segundo plano. ¿Alguna idea sobre cómo hacer esto?
Gracias de antemano por la ayuda.
No hay forma de "regresar programáticamente a la pantalla de inicio", excepto por fallas, salir del programa o llamar API no oficial. Ninguno de los dos es bienvenido por Apple. Además, las Pautas de interfaz humana también lo están cubriendo.
Para eso deberías usar el siguiente código
import Darwin exit(0)
Cuando se inicia una aplicación, el sistema llama a la función UIApplicationMain; entre otras tareas, esta función crea un objeto UIAplication único . A continuación, accede al objeto llamando al método de la clase sharedApplication.
Para salir con elegancia (la biblioteca del desarrollador de iOS explícitamente le advierte que no use exit (0) porque está registrado como un bloqueo) puede usar:
UIControl().sendAction(#selector(URLSessionTask.suspend), to: UIApplication.shared, for: nil)
Por ejemplo, mi aplicación se cierra cuando el usuario sacude el dispositivo. Entonces, en 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)
}}
Para forzar su aplicación en segundo plano, puede lanzar legalmente otra aplicación, como Safari, a través de una URL, en primer plano.
Ver: cómo abrir una URL en Swift3
UIApplication.shared.open () (y el openURL anterior) son API públicas documentadas.
Si configura la tecla plist exits-on-suspend, abrir otra aplicación mediante URL también matará su aplicación. El uso de esta clave es un uso legal documentado de las teclas de la aplicación, disponible para que cualquier aplicación lo use "legalmente".
Además, si su aplicación, por alguna razón descortés, continúa asignando y ensuciando grandes cantidades de memoria en el fondo, sin responder a las advertencias de memoria, el sistema operativo muy probablemente lo mate.
Swift 4:
UIControl().sendAction(#selector(NSXPCConnection.suspend),
to: UIApplication.shared, for: nil)