Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Intermittent and late Significant Location change events on apps built with Xcode 9 for iOS 11 devices

I have filed a radar on this already but I wanted to see if anyone else had this issue.

It appears as though significant location changes (SLCs) are behaving differently on iOS 11 but only on apps that are built on Xcode 9. It appears as though SLCs are performing much worse and are delayed when compared to iOS 10. I can back this up with data from multiple devices and an easily reproducible experiment. I wanted to try and keep this post short so if anyone wants more data or instructions on how to reproduce the issue in more detail, I'm happy to share exactly how I did all of this.

Using this minimalistic SLC caching app: https://github.com/Root-App/root-ios-slc-tester I was able to get data from iOS 10 and iOS 11 devices.

The problem exists ONLY on iOS 11 devices where the app receiving SLCs has been built on Xcode 9. Just to make sure this is clear:

  • iOS 10 device + app built on Xcode 9: works like before
  • iOS 10 device + app built on Xcode 8: works like before
  • iOS 11 device + app built on Xcode 8: works like before
  • iOS 11 device + app built on Xcode 9: issue exists

A majority of the time (but not always), SLCs on the iOS 11 + Xcode 9 build happen significantly later than SLCs on the control (iOS 10) devices.

Comparing the log files from the above app, the iOS 10 devices get SLCs more than 2 minutes before the iOS 11 devices. Sometimes 10-15 minutes before!

Sample abridged data where each line is a different trip and represents the first time that an SLC was recorded for that trip (in HH:mm:ss):

 iOS 10  |  iOS 11
-------------------
20:41:08 | 20:44:45
07:21:25 | 07:27:48
18:54:57 | 19:07:36
07:48:17 | 07:51:03
17:29:44 | 17:38:18

The gaps between when there was an SLC in iOS 10 vs iOS 11 seems unacceptably different.

Is anyone else seeing this degraded SLC behavior?

like image 735
Omniwheel Avatar asked Sep 27 '17 16:09

Omniwheel


1 Answers

If you only use “While Using” location access, as far as I understand nothing changes for you.

If you use the “Always” access though, and you didn’t provide a “While Using” fallback as you should have.

Below Information may be useful for iOS 11,

As Brad Jensen explains in the WWDC talk I mentioned, Apple has decided that forcing the user to give the app “Always” location access is a bad user experience:

Now, a second reason we think that many developers choose to require Always authorization is they’re simply trying to give their users the best possible experience (…) but this makes for a very poor user experience for the users that don’t wish to grant the app Always authorization. They are forced to choose between granting the app Always, which is more than they would like in this example, or granting it Never, which means they don’t get to benefit from any of the app’s location-based features. And their final option is to grant it Always and then revoke that authorization after they’re done using the app. In any case, the user is not having a great time with this app.

For more details you can read from below blog it’s may be more useful,

https://mackuba.eu/2017/07/13/changes-to-location-tracking-in-ios-11/

like image 87
Ashish Avatar answered Sep 30 '22 19:09

Ashish