【发布时间】:2014-11-17 23:06:26
【问题描述】:
我的应用在第一个 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];
}
// ...
}
然而,弹出窗口从未显示。
UI 有一个按钮,可以将地图带回用户的位置。在按钮的方法中,我包含了与上面相同的代码,看看它是否有帮助。
这次弹出窗口确实出现了,但它只是在屏幕上闪烁,用户无法与之交互。
在设置 > 隐私 > 定位服务 > MyApp 上,我期望有两个选项:从不和在使用应用程序时。默认情况下,它们都没有标记。另外,我在 Info.plist 中设置的“应用说明”在第二个选项中正确显示。
如果我强制标记第二个选项,应用程序可以正常运行,但我不希望用户手动浏览选项以启用它。
【问题讨论】: