Skip to content

Commit

Permalink
Location Services: don't reset desiredAccuracy on every update/error (#…
Browse files Browse the repository at this point in the history
…23209)

Summary:
See #7680.

On iOS the RCTLocationObserver delegate is overriding `desiredAccuracy` every time CLLocationManager calls `didUpdateLocations` or `didFailWithError`.  `desiredAccuracy` is reset to
`RCT_DEFAULT_LOCATION_ACCURACY` (100 meters) This effectively makes it impossible for a react-native app to use any location accuracy other than the default.

This commit simply removes the code which resets the desired accuracy, as there seems to be no rationale for doing so. The reset code was added as part of [a large general
change](705a8e0) so the original intention is unclear from the history. If somebody can explain it to me, I'm happy to rework this PR accordingly.

Changelog:
----------
[iOS] [Fixed] - Location Services accuracy constantly reset to default of 100 meters.
Pull Request resolved: #23209

Differential Revision: D13879497

Pulled By: cpojer

fbshipit-source-id: f3c6c9c5ef698b23b99c407fd764ac990d69bf8c
  • Loading branch information
omnikron authored and facebook-github-bot committed Jan 30, 2019
1 parent 4c10f93 commit bbcb97a
Showing 1 changed file with 0 additions and 10 deletions.
10 changes: 0 additions & 10 deletions Libraries/Geolocation/RCTLocationObserver.m
Original file line number Diff line number Diff line change
Expand Up @@ -353,11 +353,6 @@ - (void)locationManager:(CLLocationManager *)manager
[_locationManager stopUpdatingLocation];
}

// Reset location accuracy if desiredAccuracy is changed.
// Otherwise update accuracy will force triggering didUpdateLocations, watchPosition would keeping receiving location updates, even there's no location changes.
if (ABS(_locationManager.desiredAccuracy - RCT_DEFAULT_LOCATION_ACCURACY) > 0.000001) {
_locationManager.desiredAccuracy = RCT_DEFAULT_LOCATION_ACCURACY;
}
}

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
Expand Down Expand Up @@ -389,11 +384,6 @@ - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *
}
[_pendingRequests removeAllObjects];

// Reset location accuracy if desiredAccuracy is changed.
// Otherwise update accuracy will force triggering didUpdateLocations, watchPosition would keeping receiving location updates, even there's no location changes.
if (ABS(_locationManager.desiredAccuracy - RCT_DEFAULT_LOCATION_ACCURACY) > 0.000001) {
_locationManager.desiredAccuracy = RCT_DEFAULT_LOCATION_ACCURACY;
}
}

static void checkLocationConfig()
Expand Down

0 comments on commit bbcb97a

Please sign in to comment.