为什么requestWhenInUseAuthorization不提示用户访问该位置?

在我的viewDidLoad方法中

 locationManager = [[CLLocationManager alloc]init]; // initializing locationManager locationManager.delegate = self; // we set the delegate of locationManager to self. locationManager.desiredAccuracy = kCLLocationAccuracyBest; [locationManager startUpdatingLocation]; if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { [locationManager requestWhenInUseAuthorization]; } 

和请求被调用,但用户不会提示? 为什么?

你可能需要更新你的plist文件。 这里有一个教程如何做到这一点 ,快速和脏:

您需要做的是将以下密钥之一添加到Info.plist文件中:

 NSLocationWhenInUseUsageDescription NSLocationAlwaysUsageDescription 

您还需要请求相应的位置方法, WhenInUseBackground授权。 使用这些调用之一:

 [self.locationManager requestWhenInUseAuthorization] [self.locationManager requestAlwaysAuthorization] 

还有一个post,我发现有帮助:

位置服务不适用于iOS 8

这个答案详细说明如何更新你的plist文件 :

将以下行添加到您的info.plist

 <key>NSLocationWhenInUseUsageDescription</key> <string>The spirit of stack overflow is coders helping coders</string> <key>NSLocationAlwaysUsageDescription</key> <string>I have learned more on stack overflow than anything else</string> 

在发送代码之前,您可能需要定制并拼写检查info.plist文件中的字典条目的string。