我的应用在第一个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中设置的内容在第二个选项中正确显示。
如果我强行标记第二个选项,该应用程序可以正常运行,但我不希望用户手动浏览选项以启用它。
答案 0 :(得分:0)
尝试转到设置 - >一般 - >重置 - >重置所有设置。帮助了一些人。
答案 1 :(得分:0)
[CLLocationManager authorizationStatus]
是否返回0(kCLAuthorizationStatusNotDetermined
)?因为我读了here它有时会返回nil
。
您应该尝试更改比较。