Aquí está mi situación. Estoy desarrollando una aplicación para iPhone que usa Core Location para determinar la ubicación del dispositivo. Hay un ícono: el ícono de servicios de ubicación, que aparece en la barra de estado del dispositivo. Sé lo suficiente como para decir que el objetivo del icono es decirle al usuario que algunos Servicios de ubicación están siendo utilizados actualmente. Para el usuario perspicaz, esto significa una menor duración de la batería. Por esa razón, quiero asegurarme de que el ícono se muestre solo cuando los Servicios de ubicación estén siendo empleados por mi aplicación.¿Qué determina la presencia del ícono de servicios de ubicación de iPhone en la barra de estado?
Introduzca la confusión. Nosotros, como desarrolladores, no tenemos acceso a la barra de estado a través del SDK oficial. Esto significa que el sistema operativo mostrará ese icono automáticamente en función del comportamiento de la aplicación. Por más que lo intente, no puedo encontrar una definición clara de qué es exactamente lo que hace que aparezca ese ícono.
Tal como está, el ícono aparece antes de que el delegado de mi aplicación obtenga el control y permanezca visible mientras la aplicación esté instalada, ejecutándose o no. Este es claramente el peor caso posible, y me hizo dudar de mi uso de CLLocationManager
. Quisiera explicar mi uso, pero como caso extremo, traté de eliminar el marco CoreLocation (y el framework MapKit, que sospecho que también usa CoreLocation), y todo el código relacionado con la ubicación. La aplicación sigue causando que el ícono aparezca y permanezca hasta que elimine la aplicación. Luego creé una nueva aplicación y no realicé ningún cambio excepto cambiar el identificador de la aplicación para que coincida con el identificador de mi aplicación. El ícono aún apareció. Cambié el identificador para usar el identificador de una de mis aplicaciones que no usaba la ubicación, y el ícono no apareció. Me aseguré de restablecer el dispositivo durante esta prueba.
Este problema realmente me está matando. No puedo imaginarme qué tiene que ver el ID de la aplicación con el ícono de Servicios de ubicación, pero no veo otra causa para su persistencia. Parece que Red Herring esconde el verdadero problema, pero no sé cuál es el verdadero problema.
¿Está iniciando actualizaciones de ubicación apenas se inicia su aplicación, o en algún momento después (como después de presionar un botón)? –
Los estoy comenzando en la aplicaciónDidBecomeActive: delegar el método. Entonces, tan pronto como se inicie la aplicación. –
Revisa mi respuesta editada. Lamentablemente, no tiene suerte en cuanto a que el ícono no se muestra, aunque eso no significa necesariamente que la batería se esté agotando a un ritmo mayor. –