diff options
Diffstat (limited to 'platform/ios/src/MGLMapboxEvents.m')
-rw-r--r-- | platform/ios/src/MGLMapboxEvents.m | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/platform/ios/src/MGLMapboxEvents.m b/platform/ios/src/MGLMapboxEvents.m index 8aa790c41f..8138d29169 100644 --- a/platform/ios/src/MGLMapboxEvents.m +++ b/platform/ios/src/MGLMapboxEvents.m @@ -336,13 +336,24 @@ const NSTimeInterval MGLFlushInterval = 60; if (self.paused) { [self stopUpdatingLocation]; } else { - CLAuthorizationStatus authStatus = [CLLocationManager authorizationStatus]; - if (authStatus == kCLAuthorizationStatusDenied || - authStatus == kCLAuthorizationStatusRestricted) { - [self stopUpdatingLocation]; - } else if (authStatus == kCLAuthorizationStatusAuthorized || - authStatus == kCLAuthorizationStatusAuthorizedWhenInUse) { - [self startUpdatingLocation]; + switch ([CLLocationManager authorizationStatus]) { + case kCLAuthorizationStatusNotDetermined: + case kCLAuthorizationStatusRestricted: + case kCLAuthorizationStatusDenied: + [self stopUpdatingLocation]; + break; + case kCLAuthorizationStatusAuthorized: + // Also handles kCLAuthorizationStatusAuthorizedAlways + [self startUpdatingLocation]; + break; + case kCLAuthorizationStatusAuthorizedWhenInUse: + if (UIApplication.sharedApplication.applicationState == UIApplicationStateBackground) { + // Prevent blue status bar when app is not in foreground + [self stopUpdatingLocation]; + } else { + [self startUpdatingLocation]; + } + break; } } } |