I got a question on Twitter the other day about why I am using the StartMonitoringSignificantLocationChanges() feature of the CLLocationManager. I think this link on Apple's Developer site describes why this is significant. The important text for me is:
Applications can register for significant location changes only. (Recommended) The
significant-change location service is available in iOS 4 and later for
devices with a cellular radio. It offers a low-power way to receive
location data and is highly recommended. New location updates are
provided only when the user’s position changes significantly. If the
application is suspended while running this service, new location
updates will cause the application to be woken up in the background to
handle them. Similarly, if the application is terminated while running
this service, the system relaunches the application automatically when
new location data becomes available.
The key parts are:
- This is the recommended way to handle changes in the background.
- It only works in iOS 4 and later for devices with a cellular radio, so it will only work on the iPhone and 3g iPad (once it gets iOS 4). This means that I have to continually borrow my wife's iPhone, which results in some looks of "wtf do you want with it now."
- The user position changes significantly. I think that this is a big deal. The event that you wire up does not go banging on the GPS in the device. That will help with power, though it won't be the same as if it is not using any power. Its better than the alternative of using more power.