[ 
https://issues.apache.org/jira/browse/CB-13680?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16290949#comment-16290949
 ] 

ASF GitHub Bot commented on CB-13680:
-------------------------------------

Babettestam opened a new pull request #100: CB-13680: (android) First check for 
NSLocationAlwaysUsageDescription permission to make sure 
requestAlwaysAuthorization is fired instead of requestWhenInUseAuthorization
URL: https://github.com/apache/cordova-plugin-geolocation/pull/100
 
 
   ### Platforms affected
   iOS
   
   ### What does this PR do?
   Reverses the check for location permissions in iOS, so the 
requestAlwaysAuthorization is possible in newest iOS versions.
   
   ### What testing has been done on this change?
   Only testen a Cordova app that contains the NSLocationAlwaysUsageDescription 
and NSLocationWhenInUseUsageDescription. The app asks the user if it wants to 
give the application permission to access the location "Only While Using The 
App", "Always Allow" or "Don't Allow".
   
   ### Checklist
   - [x] [Reported an issue](http://cordova.apache.org/contribute/issues.html) 
in the JIRA database
   - [x] Commit message follows the format: "CB-3232: (android) Fix bug with 
resolving file paths", where CB-xxxx is the JIRA ID & "android" is the platform 
affected.
   - [ ] Added automated test coverage as appropriate for this change.
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> 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
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> 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]

Reply via email to