2012-04-13 12 views
7

Tan pronto como puedo instalar y poner en marcha mi aplicación por primera vez, se pregunta de inmediato para los servicios de localización, a pesar de que startUpdatingLocation no ha sido llamado. Ni siquiera he asignado una instancia CLLocationManager en ese punto. Me gustaría que este aviso se haga de forma perezosa después de que realizo la llamada para que el usuario no la desactive ciegamente. ¿Ha cambiado este flujo con iOS recientemente? Recuerdo que solía ser preguntando perezosamente. Estoy usando firmware 5.1.Perezosamente solicitando los servicios de localización

+0

¿Estás hablando de ese diálogo (aplicación *** quiere usar ...) que aparece al usuario por primera vez lanza su aplicación? –

+0

Sí, de hecho, lo hace por alguna razón en 5.1. – ssteinberg

+0

@rokjarc Sí, ese es el indicado. –

Respuesta

5

Eso es interesante. Probé su hipótesis, que el administrador de ubicación ni siquiera está asignado y, sin embargo, aparece el diálogo Permiso de ubicación de iOS. Intenté la siguiente resolución de problemas. Después de cada paso, ejecutaba el proyecto en un dispositivo y solo podía hacer que apareciera la ventana emergente de ubicación en el último paso.

  • iniciar una nueva aplicación
  • requieren de localización de servicios en info.plist
  • requieren GPS en info.plist
  • enlace CoreLocation al proyecto
  • importación Core Location en cabecera
  • Hacer y sintetizar una propiedad para un gerente de locación
  • piden CLLocationManager de + authorizationStatus
  • preguntar CLLocationManager para + locationServicesEnabled
  • alloc init a CLLocationManager instancia
  • decirle a CLLocationManager que comience a actualizar la ubicación.

Sólo el paso final trajo una pronta. Para estar seguro de que incluso creé un viewController que empujó un segundo controlador de vista que inicializó un CLLocationManager y comenzó a actualizar la ubicación. La ventana emergente de permiso solo apareció cuando se presionó el segundo controlador de vista. Esto es todo con la última versión de Xcode en 5.1.

he demostrado que los servicios de localización todavía sólo pide permiso en el momento exacto que tratar de girar en lugares como lo ha hecho en los SDK anteriores. Tal vez revise su código, tal vez pegue algunos aquí para que podamos entrar en más detalles. :)

+0

Voy a intentar esto también solo para estar seguro. Todo mi manejo de ubicación se realiza a través de un singleton, por lo que solo tengo una llamada para iniciarUpdatingLocation en toda mi aplicación. Tengo un punto de interrupción y nunca se llama. La única otra posibilidad en la que puedo pensar es que uno de los marcos dependientes, por la razón que sea, está desencadenando esto. Mi proyecto es grande, por lo que será un * dolor * volver a crear el archivo del proyecto. También he estado usando y actualizando el archivo del proyecto desde iOS 3.0. –

+1

¿Utiliza una red publicitaria o un marco de telemetría? Diríjase a la barra lateral de los puntos de interrupción, haga clic en el signo más en la parte inferior y en el cuadro Símbolo escriba '- [CLLocationManager startUpdatingLocation]' y debería romperse para startUpdatingLocation en todo su proyecto y bibliotecas. También podría valer la pena escuchar '-startMonitoringSignificantLocationChanges' – jackslash

+0

¡Gracias por esto, es un buen truco para saber! Fue porque estaba asignando (no mostrando) un MKMapView en segundo plano al inicio para una visualización posterior. –

Cuestiones relacionadas