Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What determines the presence of the iPhone Location Services icon in the status bar?

Here's my situation. I'm developing an iPhone application that uses Core Location to determine the device's location. There is an icon: the Location Services Icon, that appears in the device's status bar. I know enough to say that the purpose of the icon is to tell the user that Location Services are currently being used by something. To the perceptive user, this means decreased battery life. For that reason, I want to be sure that the icon is displayed only when Location Services are actually being employed by my app.

Enter confusion. We, as developers, do not get access to the status bar via the official SDK. This means that the OS will display that icon automatically based on the behavior of the app. Try as I might, I cannot find a clear definition of what exactly causes that icon to show up.

As it stands, the icon appears before my app delegate gets control, and stays visible as long as the app is installed, running or not. This is clearly the worst case possible, and it made me doubt my use of CLLocationManager. I would elaborate on my use, but as an extreme case I tried removing the CoreLocation framework (and the MapKit framework, which I suspect also uses CoreLocation), and all code relating to location. The app still caused the icon to appear and stay until I deleted the app. I then made a brand new app, and made no changes except to change the app identifier to match the identifier of my app. The icon still appeared. I changed the identifier to use the identifier of one of my apps that did not use location, and the icon did not appear. I did make sure to reset the device during this testing.

This issue is really killing me. I cannot imagine what the application ID has to do with the Location Services icon, but I see no other cause for its persistence. It seems like a Red Herring hiding the real issue, but I'm at a loss as to the real issue.

like image 483
Matt Wilding Avatar asked Dec 10 '10 22:12

Matt Wilding


People also ask

What does it mean when the location symbol pops up on iPhone?

An app or website is using Location Services. A blue arrow may appear when the app you're using requests your location.

Why is the Location Services icon always on?

When a map & navigation app is running in the background, the location icon will appear on the status bar. To remove this icon, prevent the app from running in the background.

How does Location Services work on IOS?

Location Services uses GPS and Bluetooth (where they're available), along with crowd-sourced Wi-Fi hotspots and cellular towers to determine the approximate location of your device. Apps won't use your location until they ask for your permission and you allow permission.


1 Answers

Here's an update and a solution I've come to after some fiddling. Since my problem was clearly an issue with the OS making some connection between my app's ID and the Location Services icon, I tried resetting the device's location warnings, which I did not originally know I could do. For the curious, this can be accomplished through the Settings app, then General > Reset > Reset Location Warnings. After making this reset and upon reinstalling the app, it again requested to use Location Services. Now, the icon appears precisely on startUpdatingLocation and disappears precisely on stopUpdatingLocation, exactly as I originally intended.

I have no idea what initially caused this condition, and I have little doubt that the condition itself is an OS bug, as indicated by Matthew Frederick, but, at least in my case, the condition is curable.

like image 70
Matt Wilding Avatar answered Oct 08 '22 16:10

Matt Wilding