[
https://issues.apache.org/jira/browse/CB-13680?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jan Piotrowski (Sujan) updated CB-13680:
----------------------------------------
Remaining Estimate: (was: 1h)
Original Estimate: (was: 1h)
> cordova-plugin-geolocation permission request going wrong in newer iOS version
> ------------------------------------------------------------------------------
>
> Key: CB-13680
> URL: https://issues.apache.org/jira/browse/CB-13680
> Project: Apache Cordova
> Issue Type: Bug
> Components: cordova-plugin-geolocation
> Environment: iOS
> Reporter: Babette Stam
> Priority: Minor
> Fix For: Master
>
>
> When you want to request the always access location permissions the newer iOS
> version requires that the NSLocationAlwaysUsageDescription and
> NSLocationWhenInUseUsageDescription are both set. It is not allowed to only
> set the NSLocationAlwaysUsageDescription anymore.
> But in the Cordova code there is a check that when you have the
> NSLocationWhenInUseUsageDescription set, the application will only ask the
> user permission to use the location in app usage
> (requestWhenInUseAuthorization). It will run the requestAlwaysAuthorization.
> I saw a different issue reported 2 years ago with the question reversed
> (CB-8826). This was then implemented, but is not working with the latest
> version. The following code should be edited:
> {code:javascript}
> #ifdef __IPHONE_8_0
> NSUInteger code = [CLLocationManager authorizationStatus];
> if (code == kCLAuthorizationStatusNotDetermined && ([self.locationManager
> respondsToSelector:@selector(requestAlwaysAuthorization)] ||
> [self.locationManager
> respondsToSelector:@selector(requestWhenInUseAuthorization)])) { //iOS8+
> __highAccuracyEnabled = enableHighAccuracy;
> if([[NSBundle mainBundle]
> objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"]){
> [self.locationManager requestWhenInUseAuthorization];
> } else if([[NSBundle mainBundle]
> objectForInfoDictionaryKey:@"NSLocationAlwaysUsageDescription"]) {
> [self.locationManager requestAlwaysAuthorization];
> } else {
> NSLog(@"[Warning] No NSLocationAlwaysUsageDescription or
> NSLocationWhenInUseUsageDescription key is defined in the Info.plist file.");
> }
> return;
> }
> #endif
> {code}
> It should be:
> {code:javascript}
> #ifdef __IPHONE_8_0
> NSUInteger code = [CLLocationManager authorizationStatus];
> if (code == kCLAuthorizationStatusNotDetermined && ([self.locationManager
> respondsToSelector:@selector(requestAlwaysAuthorization)] ||
> [self.locationManager
> respondsToSelector:@selector(requestWhenInUseAuthorization)])) { //iOS8+
> __highAccuracyEnabled = enableHighAccuracy;
> if([[NSBundle mainBundle]
> objectForInfoDictionaryKey:@"NSLocationAlwaysUsageDescription"]) {
> [self.locationManager requestAlwaysAuthorization];
> } else if([[NSBundle mainBundle]
> objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"]){
> [self.locationManager requestWhenInUseAuthorization];
> } else {
> NSLog(@"[Warning] No NSLocationAlwaysUsageDescription or
> NSLocationWhenInUseUsageDescription key is defined in the Info.plist file.");
> }
> return;
> }
> #endif
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]