Significant-Change Location Updates with no location changes

https://developer.apple.com/library/content/documentation/Performance/Conceptual/EnergyGuide-iOS/LocationBestPractices.html says

Significant-change location updates wake the system and your app once every 15 minutes, at minimum, even if no location changes have occurred.

I could not find details about what happens (which delegate methods will get called) after 15 minutes with no location changes.

I have confirmed my app awaken after I move about 500m, but never confirmed my app awaken if I stay same location more than hours.

  1. Is there any document(s) describing details about what happens on `even if no location changes have occurred`?
  2. Is there any additional code needed to get my app awaken even if no location changes have occured?
  3. Which delegate method(s) will get called? locationManager(_:didUpdateLocations:)?

Replies

I was quite surprised by that quote from the docs so I ran your question past the DTS experts on iOS’s location subsystem. My favourite response was “The documentation is wrong, except it is not, except it is.” (-:

There’s some complex stuff going on here, more than I’m prepared to explain even if I did understand it fully, but the take-home messages are:

  • Significant location change (SLC) is more expensive, power wise, than region and visit monitoring

  • If you use SLC, you should be tolerant of being resumed even if there was no location change

Note the wording in the last point: simply using SLC does not guarantee that your app will be resumed as some periodic rate.

Beyond that, my recommendation is that you file a bug against this doc to clarify this point, pointing out the discrepancy between the behaviour you’ve observed and the behaviour that the doc seems to imply.

Please post your bug number, just for the record.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

Thank you for your reply and the clarification!
I have submitted a report: #30345408

Just to clarify, does that mean we can't expect SLC to update a location every 15 minutes?

… does that mean we can't expect SLC to update a location every 15 minutes?

Correct. The expected behaviour of SLC is that it resumes your app in the background when there has been a significant location change. If the device’s location doesn’t change, you should not expect to get resumed ‘just because’.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"