Estoy escribiendo una aplicación que implica autenticación en la pantalla inicial y permite el acceso a datos confidenciales en pantallas posteriores. Cuando el iPhone está bloqueado, ya sea con el botón de bloqueo o mediante el bloqueo automático, me gustaría que la aplicación se cierre solo como medida de seguridad. ¿Hay alguna manera de que pueda hacer esto?¿Cómo cierro mi aplicación de iPhone cuando la pantalla se bloquea?
Respuesta
Su UIApplicationDelegate recibirá el mensaje
– applicationWillResignActive:
cuando se bloquea la pantalla, y
– applicationDidBecomeActive:
cuando vuelve. Sin embargo, también podría recibir estos mensajes en otras situaciones (como recibir una llamada telefónica, el usuario cierra la aplicación en iOS 4.0 y posterior) y no conozco una manera de distinguir el motivo.
Una mejor experiencia de usuario en mi opinión sería volver a mostrar la autenticación cuando vuelva la aplicación. De esta forma, el usuario no se confundirá cuando el teléfono se desbloquee, y la aplicación que tenía se cerró misteriosamente.
Si mal no recuerdo, la aplicación se pone a dormir cuando el teléfono está bloqueado.
Desde la introducción de la multitarea, Apple cambió el comportamiento para que su aplicación reciba un mensaje específico cuando se desbloquea/cambia.
Yo sugeriría que simplemente escuchara eso y luego pidiera autenticación de nuevo en este punto.
No creo que solo puede salir de su aplicación (ni debe), no sé cualquier aplicación que solo se mata ...
Lo siento por ser no demasiado específica aquí, pero espero que ahora sabrá dónde llevar ...
"Cerrar su aplicación" va en contra de las directrices de Apple. Si bien algunas aplicaciones realmente lo hacen, es una de las cosas que puede hacer que tu aplicación sea rechazada. Fue contra las pautas de Apple antes de la multitarea y ahora es más importante debido a la multitarea. La experiencia del usuario es cuando vuelven al teléfono y a su aplicación después de un bloqueo o de estar en otra aplicación, su aplicación aún debería estar ejecutándose. "Cerrar su aplicación" llevaría al usuario a creer que su aplicación se ha bloqueado y es probable que escriban revisiones a tal efecto.
Si su deseo es proteger la información en la aplicación cuando el usuario se va "lejos", entonces debe mirar UIApplicationDelegate Protocol Reference. En particular,
applicationDidEnterBackground:
(donde debe desconectar al usuario) yapplicationDidBecomeActive:
(donde debe hacer que el usuario vuelva a iniciar sesión).
Como última nota, es posible que desee por defecto a "cierre de sesión automático", pero dar al usuario una opción de configuración para mantenerlos registran en si así lo desean. No es tan difícil, y los pocos que lo deseen pueden aprovechar el entorno.
De hecho, leí en alguna parte que era una mala práctica tener una aplicación de iPhone cerca, pero lo ignoré como una opinión personal. Estoy empezando a ver a partir de la multitud de respuestas a esta pregunta que, además de ser grosero y ambiguo (no hay manera de que el usuario sepa la diferencia entre un cese controlado y un crash), está prácticamente prohibido por Apple. – Andrew
Para aclarar cualquier confusión, acabo de ejecutar algunas pruebas, en un dispositivo con iOS 4.3.2:
Al iniciar la aplicación, la aplicación se envía: aplicación: didFinishLaunchingWithOptions: applicationDidBecomeActive:
Cuando se pulsa el botón de inicio, su aplicación es enviado:
applicationWillResignActive:
applicationDidEnterBackground:
Cuando relanzar esa misma aplicación más tarde, se envía su aplicación:
applicationWillEnterForeground:
applicationDidBecomeActive:
Cuando presiona el botón de bloqueo, su aplicación es enviado:
applicationWillResignActive:
Al desbloquear, su aplicación es enviado:
applicationDidBecomeActive:
Cuando se recibe una llamada, la aplicación se envía a:
applicationWillResignActive:
Si Don no responda esa llamada, se envía su aplicación a:
applicationDidBecomeActive:
Cuando se recibe una llamada, la aplicación se envía a:
applicationWillResignActive:
Si contesta la llamada, su aplicación es enviado a:
applicationDidEnterBackground:
Al colgar esa llamada, su aplicación es enviado :
applicationWillEnterForeground:
applicationDidBecomeActive:
yo diría que cuando se obtiene una applicationWillResignActive
: a continuación, debe cerrar la sesión, de autenticarse, bloquear o descartar su información confidencial, y cuando llegue una applicationDidBecomeActive:
continuación, volver a autenticarse . Ese es llamado en el lanzamiento, vuelve del fondo y desbloquea el dispositivo.
Además, estos dos métodos pueden ser interesante para usted, pero que en realidad no ayudará al caso específico que le interesa:
- (void)applicationProtectedDataWillBecomeUnavailable:(UIApplication *)application
- (void)applicationProtectedDataDidBecomeAvailable:(UIApplication *)application
Yo también recomendaría no salir de la aplicación cuando el dispositivo se bloquee. Este no es un comportamiento amigable para el usuario. – mahboudz
Gracias, como un programador bastante nuevo, todavía me estoy acostumbrando a equilibrar la utilidad con la facilidad de uso. Esto ayuda mucho! – Andrew
- 1. ¿Cómo ejecutar mi aplicación incluso después de que la pantalla del iPhone se bloquee?
- 2. Symbolicate aplicación ad hoc iPhone se bloquea
- 3. pantalla parpadea cuando corro mi aplicación
- 4. libgdx - aplicación se bloquea cuando TiledMapRenderer.render llamada()
- 5. La aplicación se bloquea cuando se ejecuta con instrumentos
- 6. AdMob se bloquea la aplicación para el iPhone Xcode
- 7. Aplicación para iPhone que se bloquea en [self.tableView endUpdates]
- 8. ¿Cómo crear minivolcado para mi proceso cuando se bloquea?
- 9. Aplicación para iPhone que se bloquea con NSUnknownKeyException setValue: forUndefinedKey:
- 10. ¿Cómo reconocer dónde se bloquea la aplicación?
- 11. ¿Cómo hacer una pantalla de bienvenida (pantalla visible cuando se inicia la aplicación)?
- 12. ¿por qué mi aplicación se bloquea? UITable y controladores
- 13. ¿Cómo se puede saber si el iPhone se bloquea?
- 14. aplicación iPhone de fondo para actualizar la pantalla cuando se recibe una llamada telefónica
- 15. ¿Qué función se invoca cuando finaliza la aplicación de iPhone?
- 16. ¿cómo transfiero mi aplicación de iPhone a mi iPhone real?
- 17. MKMapView aplicación se bloquea cuando controlador de vista aparecido
- 18. ¿Cómo evito que la pantalla del iPhone se oscurezca o se apague mientras mi aplicación se está ejecutando?
- 19. La detención de la aplicación Erlang se bloquea cuando mnesia se detuvo desde el programa
- 20. Control.Invoke() bloquea la aplicación
- 21. WP7 La aplicación se bloquea inmediatamente después de la implementación
- 22. Android se bloquea cuando la aplicación se cierra y se vuelve a abrir
- 23. ¿Cómo abrir la aplicación iphone mail desde mi propia aplicación?
- 24. Intentando implementar mi aplicación en mi iPhone con jailbreak, ¡pero la aplicación se cierra de inmediato!
- 25. Preferencias compartidas se reinician cuando la aplicación se cierra forzadamente o se bloquea
- 26. iPhone aplicación en ejecución, mientras que la pantalla bloqueada
- 27. Aplicación se bloquea cuando agrego superposición a mkmapview
- 28. PhoneGap aplicación se bloquea cuando se conmuta la orientación incluso con AndroidManifest cambia
- 29. Iphone Core Data se bloquea al guardar
- 30. ¿Cómo evito que la aplicación finalice cuando cierro el formulario de inicio?
gracias, es bueno saber los métodos específicos que se envían en estas casos. – Andrew