Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

requestAlwaysAuthorization not showing permission alert

I'm trying to use some fancy iBeacons without success, kCLAuthorizationStatusNotDetermined all time. According to other questions it's a requirement to add those keys to info.plist (some questions says one, other says both). According to an article for iBeacons I need the Always option.

<key>NSLocationWhenInUseUsageDescription</key> <string>Nothing to say</string> <key>NSLocationAlwaysUsageDescription</key> <string>Permiso para acceder siempre</string> 

At viewDidAppear:

self.locManager = [[CLLocationManager alloc]init]; self.locManager.delegate = self; [self.locManager requestAlwaysAuthorization]; NSUUID* region1UUID = [[NSUUID alloc]initWithUUIDString:@""]; //ibeacon real UUID between "". Checked it's not nil.  self.beaconRegion = [[CLBeaconRegion alloc]                                 initWithProximityUUID:proximityUUID                                 identifier:@"myCoolString"];  self.beaconRegion.notifyEntryStateOnDisplay = YES; self.beaconRegion.notifyOnEntry = YES; self.beaconRegion.notifyOnExit = NO; [self.locManager startMonitoringForRegion:self.beaconRegion]; [self.locManager startRangingBeaconsInRegion:self.beaconRegion]; 

Icon didn't appear at Settings/Privacy/Location until it was executed one of the two last methods. The Alert View to approve permissions never appears. If I perform a manual change at Location Settings and check it it will change status but at a few moments later Location at Settings will delete "Always" status for my app and will leave it blank again. Later I check with no luck

-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { 

Any ideas what is missing or wrong? Thank you

like image 964
Carlos Pastor Avatar asked Sep 23 '14 21:09

Carlos Pastor


2 Answers

For iOS 11 developers, you should take a look at this post: Location Services not working in iOS 11.


TL;DR: you need ALL THREE location keys in the Info.plist:

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key> <string>...</string> <key>NSLocationAlwaysUsageDescription</key> <string>...</string> <key>NSLocationWhenInUseUsageDescription</key> <string>...</string> 

Along with InfoPlist.strings translations in case of multilingual apps.

like image 82
Elist Avatar answered Sep 30 '22 02:09

Elist


Had exactly the same problem. It turned out that in my case the NSLocationAlwaysUsageDescription was required in my InfoPlist.strings localization files as well. Having NSLocationAlwaysUsageDescription in Info.plist wasn't enough...

like image 29
chris Avatar answered Sep 30 '22 03:09

chris