iOS 8未请求位置权限

时间:2014-09-23 16:33:42

标签: ios8 cllocationmanager

我的应用在第一个ViewController中有一张地图。在iOS 7上,它会在第一次运行时立即自动显示“位置”权限弹出窗口。但是,在iOS 8上,需要进行一些更改。我已将密钥NSLocationWhenInUseUsageDescription包含在我的Info.plist文件中,并在AppDelegate中添加了:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // ...

  if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {
    CLLocationManager *locationManager = [[CLLocationManager alloc] init];
    [locationManager requestWhenInUseAuthorization];
  }

  // ...
}

然而,弹出窗口从未显示过。

用户界面有一个按钮可将地图带回用户的位置。在按钮的方法中,我已经包含了与上面相同的代码,以确定它是否有用。
这次弹出窗口确实出现了,但它只是在屏幕上闪烁,用户无法与之交互。

在设置>隐私>位置服务> MyApp有两个我期望的选项:从不使用应用程序。默认情况下,它们都没有标记。此外,"应用说明"我在Info.plist中设置的内容在第二个选项中正确显示。

如果我强行标记第二个选项,该应用程序可以正常运行,但我不希望用户手动浏览选项以启用它。

2 个答案:

答案 0 :(得分:0)

尝试转到设置 - >一般 - >重置 - >重置所有设置。帮助了一些人。

答案 1 :(得分:0)

[CLLocationManager authorizationStatus]是否返回0(kCLAuthorizationStatusNotDetermined)?因为我读了here它有时会返回nil

您应该尝试更改比较。