The location arrow on iOS

Hi all,

I wanted to take some time to talk about the location indicator on the iPhone, as there’s quite a bit of confusion about what it means. Let me start by talking about the 3 main[1] types of location information available on the iPhone.

  1. GPS. Most accurate (5m) when outside, with an extremely high battery impact.
  2. WiFi. Most accurate (10m) when inside, with a high battery impact
  3. Cell tower. Rarely accurate (around 500 to 2000m), with very little battery impact

It’s also important to know about the 2 main[2] types of location services available in the background on iOS 4.0 and above

  1. Core Location. This allows you to receive location updates of a desired accuracy or better, ad infinitum. To utilize Core Location in the background you must specify the application as requiring the location background mode. This then informs the user that the application will likely have a high battery impact. This mode is designed for applications such as turn-by-turn directions.
  2. Significant Location updates. This allows the application to be notified whenever the device changes cell towers. At that point the application can ask the operating system for a limited time (typically up to 10 minutes) to do any processing. This may include Core Location updates as shown above.

Now, with all that knowledge, let’s look at how things changed from iOS 4.0 to iOS 4.1

iOS 4.0: Show the arrow only when Core Location is running i.e. high battery impact

This really allows user to know when an application is going to significantly impact their battery life, allowing them to turn off such applications. Most application using Core Location will turn it on in such a way that it ends up activating the WiFi or GPS radios.

iOS 4.1: Show the arrow when either Core Location or Significant Location services are running i.e. privacy impact

This educates the user more about privacy – they can know whether any application currently has access to their location. But just because the arrow is there doesn’t mean the phone is actually processing anything, it may be entirely dormant.

Summary

Many people got used to the idea that the little location arrow would only appear when the GPS was running. As of iOS 4.1 this is no longer the case.

Any application that is currently registered Significant Location updates will have the arrow visible at all times, even if the phone is stationary and dormant.

Interesting side note

Turning off Location Services for a given app doesn’t completely turn it off.

For those who don’t know how, the standard way is to go to Settings->General->Location Services. You can either turn off location for all applications, or for an individual application. You’ll also see an arrow next to any application that has requested location data in the last 24 hours.

What it actually does is cause a callback to fire saying there was an error collecting location data every time location data is collected for another app. Let me illustrate.

1) You are running GoodApp and BadApp on your iPhone

2) You turn off Location Services for BadApp but leave it on for GoodApp

3) Every time GoodApp gets a location, BadApp is told “Sorry, no location for you”.

Of course, I would have expected BadApp just not to receive anything at all. In the current framework, BadApp is actually receiving some form of data: that another application is accessing location and the phone is likely to be moving.

Notes

[1]. Yes there are more complexities to interactions between these types, and some cell tower information is available even when no cell signal is available. However I considered that outside the scope of this article.

[2]. There are additional hacks to gaining background location using various other background modes, jailbreaking, or other techniques. The vast majority of iPhone location-based apps use one or both of the 2 mentioned.

6 Responses to The location arrow on iOS

  1. PAtrick says:

    I have been using a significant background update app since 4.0 and the arrow has always been shown (actually still am running 4.0 and looking at the arrow now). Are you sure the case you present for 4.1 wasn’t always the case?

  2. Maybe now I will get less support e-mails telling me the GPS is always running.

    Great article.

  3. Mick says:

    Hi Patrick,

    Yes I am sure. If you have access to the Apple dev forums you can see discussion on this exact point. The relevant link is https://devforums.apple.com/message/293551#293551.

    There are complicating issues however.
    1) It’s possible to have apps that utilize both Significant Location and Core Location in the background.

    2) Some apps that only use Significant Location have the location arrow always appear in OS 4.0 the first time they are installed. Typically deleting and reinstalling changes this behavior. You can see our post to our users on this behavior a month ago:

    http://getsatisfaction.com/whereoscope/topics/the_location_indicator_stays_on_all_the_time

    Cheers
    Mick

  4. John says:

    Great post. Thank you for all the detailed information!

  5. […] To make the location arrow go away (this won’t work on iOS 4.1, see my prior post) […]

Leave a comment