diff options
author | Timur Pocheptsov <timur.pocheptsov@qt.io> | 2017-03-16 10:39:03 +0100 |
---|---|---|
committer | Timur Pocheptsov <timur.pocheptsov@qt.io> | 2017-03-17 10:47:49 +0000 |
commit | 51052caaa27c639c10f7618a853d0b374720c6ea (patch) | |
tree | 6b554679770cb08cd9aa9dd98802381b8c5be8d1 /src/plugins | |
parent | e7b02ce343bf0b772ae2ef86f4e900e8af26c03b (diff) | |
download | qtlocation-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.mm | 16 |
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]; |