2012-09-20 12 views
36

Tengo una aplicación que usa los contactos del iPhone. Con iOS 6, se le pedirá al usuario acceso de contacto en el primer intento. En este punto, el usuario puede presionar 'Permitir' o 'No permitir'. El problema es cuando el usuario crea el fondo de la aplicación, y luego navega a Configuración-> Privacidad-> Contactos para alternar la configuración de privacidad de contacto para mi aplicación. Una vez que se activa, lo que puedo ver en la consola que mi aplicación:Alternar la configuración de privacidad matará a la aplicación

aplicación 'UIKitApplication: com.myApp' se cerró normalmente con la señal 9: muertos: 9

No puedo encontrar ningún información sobre esto en la documentación de Apple. ¿Alguien sabe una forma de prevenir esto? ¿Esto es como está diseñado? ¿O es esto un error de Apple?

+2

Estoy obteniendo un comportamiento similar en los contactos. Experimenté con la configuración de privacidad de la foto y mi aplicación también falla si se activa mientras la aplicación está en segundo plano. Considere añadir etiquetas adicionales a su pregunta, 'iphone' 'addressbook' 'objectivec' que podría aumentar su visibilidad. – Mike

+0

me sucede también. Esto parece un error de Apple. –

+1

Apple Bug Reporter ID de problema: 12360315 – rocky

Respuesta

60

el sistema operativo envía una señal SIGKILL que no es un accidente - sesión de Apple en la vida privada en iOS6 dice:

  • Si cambios de permisos, aplicación es dejar de fumar.
  • Se llama al controlador de caducidad de tareas en segundo plano, si está registrado
  • iOS luego mata la aplicación.

WWDC 2012 Session Videos: Privacy Support in iOS and OS X

manejador de caducidad: beginBackgroundTaskWithExpirationHandler

No hay forma de evitar esto puedo ver.

+2

Esto es lamentable. – Maurizio

+0

Esto es todo. Gracias por la publicación. – rocky

+4

La aplicación también se cierra en iOS7. Nota: si ejecuta la aplicación en el dispositivo normalmente - NO en la depuración de Xcode - el la aplicación se relanzará automáticamente después de que los permisos hayan cambiado. El usuario no verá que se produjo un bloqueo (suponiendo, por supuesto, que la aplicación maneje todo correctamente al reiniciar). – leanne

2

Después de probar beginBackgroundTaskWithExpirationHandler puedo decir que el bloque de manejo de caducidad no se llama después de cambiar la configuración de permisos como se indica en la presentación de Apple.

Cuestiones relacionadas