我的应用在第一个ViewController中有一个地图。在iOS 7上,它会在第一次运行时自动显示位置权限弹出窗口。但是,在iOS 8上,需要进行一些更改。我已经包含了关键NSLocationWhenInUseUsageDescription
我Info.plist文件,并在AppDelegate中,我说:iOS 8不请求位置权限
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// ...
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
[locationManager requestWhenInUseAuthorization];
}
// ...
}
然而,在弹出从未显示。
用户界面有一个按钮可以将地图带回用户的位置。在按钮的方法中,我已经包含了与上面相同的一段代码,以查看它是否有帮助。
这次弹出确实会出现,但它只是闪烁在屏幕上,用户无法与之交互。
在设置>隐私>定位服务> MyApp有我期望的两个选项:永远不会和当使用应用程序。它们中没有一个是默认标记的。此外,我在Info.plist中设置的“应用程序说明”在第二个选项中正确显示。
如果我强制标记第二个选项,该应用可以正常工作,但我不希望用户手动浏览选项以启用它。