ios - App 进入 LocationManager 批准循环

标签 ios cllocationmanager

在我的应用程序中,我有以下代码;

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    // Start location services
    if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
        [self.locationManager requestAlwaysAuthorization];
    }
    locationManager = [[CLLocationManager alloc] init];
    etc...

不知何故,当我进行全新安装时,一旦位置管理器启动,该应用程序就会进入循环,重复“您是否允许此应用程序使用位置服务”-对话框比我单击“确定”或取消。

摆脱这个循环的方法是切换到“设置”并手动 批准使用。

这是 iOS8,我确实在 .plist 中添加了强制性字符串。

我该怎么办?

最佳答案

您的问题是您在 applicationDidBecomeActive 中请求权限 - 当显示权限对话框时,您的应用程序变为非事件状态(因为有一个系统对话框处于事件状态),然后一旦对话框被关闭再次变为事件状态 - 但尚未处理权限,因此会显示对话框等等。

您应该在另一种方法中请求位置权限 - applicationDidFinishLaunchingWithOptions: 或在您的 View Controller 或您想要实例化您的 CLLocationManager 的其他类中 - didBecomeActive 不是执行此操作的好地方。

关于ios - App 进入 LocationManager 批准循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28210748/

相关文章:

iOS : alert user for specific Geo location area (lat, 长)

ios - 我应该如何修复 Nimble 文件中的错误?

ios - 如何在 Swift 中打开搜索 tableView

html - iOS 需要双击一个简单的链接元素

ios - 应用程序在安装时不询问位置服务权限 WhenInUse?

ios - 在 iOS Objective C 中处理位置权限

ios - 在 Facebook 图形 API 2.1 中仅选择生日

ios - 无需 iTunes 即可将文件从 Mac/Pc 传输到 iOS 应用程序文档

ios - 使用 iOS 地理围栏跟踪多个(20 多个)位置

ios - 以近乎精确的 iOS 确定用户位置