summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorTimur Pocheptsov <timur.pocheptsov@qt.io>2017-03-16 10:39:03 +0100
committerTimur Pocheptsov <timur.pocheptsov@qt.io>2017-03-17 10:47:49 +0000
commit51052caaa27c639c10f7618a853d0b374720c6ea (patch)
tree6b554679770cb08cd9aa9dd98802381b8c5be8d1 /src/plugins
parente7b02ce343bf0b772ae2ef86f4e900e8af26c03b (diff)
downloadqtlocation-51052caaa27c639c10f7618a853d0b374720c6ea.tar.gz
CLLocationManager - allow background updates
To allow background updates, on iOS we have to enable this capability in the app's plist + also set a property on CLLocationManager. [ChangeLog] Allow background updates if such capability is present in infoDict Task-number: QTBUG-52014 Task-number: QTBUG-59275 Change-Id: Ifadfbf9a35919912895b3515348d55afa97173c3 Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
Diffstat (limited to 'src/plugins')
-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];