summaryrefslogtreecommitdiff
path: root/platform/ios/src/MGLMapboxEvents.m
diff options
context:
space:
mode:
Diffstat (limited to 'platform/ios/src/MGLMapboxEvents.m')
-rw-r--r--platform/ios/src/MGLMapboxEvents.m25
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;
}
}
}