'iOS CLocationUpdates in 10.3.1 drop outs

Since I updated my test device to 10.3.1 I see an unusual unreliable behavior of CoreLocation updates. Background updates worked fine, but now I do see several minutes with no location updates.

Example: (watch the gap between 7:52 and 7:55)

"DidUpdateLocation(456):" 1 item(s), [0]:<+50.32941864,+7.32525473> +/- 10.00m (speed 12.89 mps / course 268.59) @ 11.04.17, 07:52:33 Mitteleuropäische Sommerzeit
"DidUpdateLocation(457):" 1 item(s), [0]:<+50.32945728,+7.32498240> +/- 10.00m (speed 15.14 mps / course 274.22) @ 11.04.17, 07:52:34 Mitteleuropäische Sommerzeit
"DidUpdateLocation(458):" 1 item(s), [0]:<+50.32949496,+7.32475064> +/- 10.00m (speed 15.72 mps / course 276.33) @ 11.04.17, 07:52:35 Mitteleuropäische Sommerzeit
"DidUpdateLocation(459):" 1 item(s), [0]:<+50.32913876,+7.31447465> +/- 20.00m (speed -1.00 mps / course -1.00) @ 11.04.17, 07:54:01 Mitteleuropäische Sommerzeit
"DidUpdateLocation(460):" 1 item(s), [0]:<+50.33095244,+7.31326157> +/- 3848.52m (speed -1.00 mps / course -1.00) @ 11.04.17, 07:55:14 Mitteleuropäische Sommerzeit
"DidUpdateLocation(461):" 1 item(s), [0]:<+50.33135000,+7.31427845> +/- 3848.52m (speed -1.00 mps / course -1.00) @ 11.04.17, 07:55:14 Mitteleuropäische Sommerzeit
"DidUpdateLocation(462):" 1 item(s), [0]:<+50.33164169,+7.31502036> +/- 3848.53m (speed -1.00 mps / course -1.00) @ 11.04.17, 07:55:14 Mitteleuropäische Sommerzeit
"DidUpdateLocation(463):" 1 item(s), [0]:<+50.33185754,+7.31555743> +/- 3848.75m (speed -1.00 mps / course -1.00) @ 11.04.17, 07:55:15 Mitteleuropäische Sommerzeit
"DidUpdateLocation(464):" 1 item(s), [0]:<+50.33201442,+7.31595280> +/- 3848.87m (speed -1.00 mps / course -1.00) @ 11.04.17, 07:55:16 Mitteleuropäische Sommerzeit
"DidUpdateLocation(465):" 1 item(s), [0]:<+50.33251218,+7.30468715> +/- 165.00m (speed -1.00 mps / course -1.00) @ 11.04.17, 07:55:17 Mitteleuropäische Sommerzeit
"DidUpdateLocation(466):" 1 item(s), [0]:<+50.33251444,+7.30467202> +/- 165.00m (speed -1.00 mps / course -1.00) @ 11.04.17, 07:55:18 Mitteleuropäische Sommerzeit
"DidUpdateLocation(467):" 1 item(s), [0]:<+50.33281479,+7.30472224> +/- 200.00m (speed 10.76 mps / course 355.43) @ 11.04.17, 07:55:19 Mitteleuropäische Sommerzeit
"DidUpdateLocation(468):" 1 item(s), [0]:<+50.33300525,+7.30473463> +/- 200.00m (speed 10.76 mps / course 355.43) @ 11.04.17, 07:55:20 Mitteleuropäische Sommerzeit
"DidUpdateLocation(469):" 1 item(s), [0]:<+50.33316824,+7.30473717> +/- 30.00m (speed 14.44 mps / course 349.80) @ 11.04.17, 07:55:21 Mitteleuropäische Sommerzeit
"DidUpdateLocation(470):" 1 item(s), [0]:<+50.33309477,+7.30483197> +/- 50.00m (speed 16.59 mps / course 352.62) @ 11.04.17, 07:55:22 Mitteleuropäische Sommerzeit
"DidUpdateLocation(471):" 1 item(s), [0]:<+50.33345976,+7.30459652> +/- 10.00m (speed 14.98 mps / course 349.45) @ 11.04.17, 07:55:23 Mitteleuropäische Sommerzeit
"DidUpdateLocation(472):" 1 item(s), [0]:<+50.33364132,+7.30456316> +/- 10.00m (speed 14.47 mps / course 350.86) @ 11.04.17, 07:55:24 Mitteleuropäische Sommerzeit

It looks as it CL switched from using GPS hardware to cell tower (accuracy jumps to "+/- 3848.52m", speed to "-1") and back. The app run in background, but had plenty of remaining background time (UIApplication.shared.backgroundTimeRemaining).

BTW: this remaining background time (172 seconds) did not change between the gap. Before and after the gap there was the usual decrements every second.

My location update settings are the following:

"initializeLocationTracking()"): .pausesLocationUpdatesAutomatically == false
"initializeLocationTracking()"): .allowsBackgroundLocationUpdates    == true
"initializeLocationTracking()"): .distanceFilter  == -1.0
"initializeLocationTracking()"): .activityType    == .fitness
"initializeLocationTracking()"): .desiredAccuracy == 10.0

Does anybody else see the same behavior? Has someone a good explanation?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source