summaryrefslogtreecommitdiff
path: root/src/plugins/position/corelocation/qgeopositioninfosource_cl.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/position/corelocation/qgeopositioninfosource_cl.mm')
-rw-r--r--src/plugins/position/corelocation/qgeopositioninfosource_cl.mm16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/plugins/position/corelocation/qgeopositioninfosource_cl.mm b/src/plugins/position/corelocation/qgeopositioninfosource_cl.mm
index 54a079a2..3fac056e 100644
--- a/src/plugins/position/corelocation/qgeopositioninfosource_cl.mm
+++ b/src/plugins/position/corelocation/qgeopositioninfosource_cl.mm
@@ -140,6 +140,22 @@ bool QGeoPositionInfoSourceCL::enableLocationManager()
{
if (!m_locationManager) {
m_locationManager = [[CLLocationManager alloc] init];
+
+#ifdef Q_OS_IOS
+ NSDictionary<NSString *, id> *infoDict = [[NSBundle mainBundle] infoDictionary];
+ if (id value = [infoDict objectForKey:@"UIBackgroundModes"]) {
+ if ([value isKindOfClass:[NSArray class]]) {
+ NSArray *modes = static_cast<NSArray *>(value);
+ for (id mode in modes) {
+ if ([@"location" isEqualToString:mode]) {
+ m_locationManager.allowsBackgroundLocationUpdates = YES;
+ break;
+ }
+ }
+ }
+ }
+#endif
+
m_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
m_locationManager.delegate = [[PositionLocationDelegate alloc] initWithInfoSource:this];