Skip to content

Commit

Permalink
Set background location enabled if not requesting permissions (#232)
Browse files Browse the repository at this point in the history
  • Loading branch information
naftalibeder authored Jul 21, 2023
1 parent e798d05 commit 49bfbc8
Showing 1 changed file with 15 additions and 8 deletions.
23 changes: 15 additions & 8 deletions ios/RNCGeolocation.mm
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,8 @@ - (void)beginLocationUpdatesWithDesiredAccuracy:(CLLocationAccuracy)desiredAccur
{
if (!_locationConfiguration.skipPermissionRequests) {
[self requestAuthorization:nil error:nil];
} else {
[self enableBackgroundLocationUpdates];
}

if (!_locationManager) {
Expand Down Expand Up @@ -271,19 +273,24 @@ - (void)timeout:(NSTimer *)timer
// Request location access permission
if (wantsAlways) {
[_locationManager requestAlwaysAuthorization];

// On iOS 9+ we also need to enable background updates
NSArray *backgroundModes = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UIBackgroundModes"];
if (backgroundModes && [backgroundModes containsObject:@"location"]) {
if ([_locationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {
[_locationManager setAllowsBackgroundLocationUpdates:YES];
}
}
[self enableBackgroundLocationUpdates];
} else if (wantsWhenInUse) {
[_locationManager requestWhenInUseAuthorization];
}
}

- (void)enableBackgroundLocationUpdates
{
// iOS 9+ requires explicitly enabling background updates
NSArray *backgroundModes = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UIBackgroundModes"];
if (backgroundModes && [backgroundModes containsObject:@"location"]) {
if ([_locationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {
[_locationManager setAllowsBackgroundLocationUpdates:YES];
}
}
}


RCT_REMAP_METHOD(startObserving, startObserving:(RNCGeolocationOptions)options)
{
checkLocationConfig();
Expand Down

0 comments on commit 49bfbc8

Please sign in to comment.