iOS 8 - 无法获取当前位置,错误域 = kCLErrorDomain 代码 = 0

Posted

技术标签:

【中文标题】iOS 8 - 无法获取当前位置,错误域 = kCLErrorDomain 代码 = 0【英文标题】:iOS 8 - Can't get current location, Error Domain=kCLErrorDomain Code=0 【发布时间】:2015-06-01 11:25:18 【问题描述】:

我无法获取当前位置。我仍然收到错误:

Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)"

我已经完成了在这里找到的所有操作:

ios 模拟器中重置内容和设置(模拟器中的地图应用程序显示正确的位置)。 在 Xcode 中的 Product>Scheme>Edit 我未标记允​​许位置模拟(当我标记它时,它模拟例如伦敦)。 我已将 NSLocationWhenInUseUsageDescription 添加到我的项目中的 Info.plist 文件中(应用程序要求位置权限,我可以在 iOS 模拟器的设置中看到它们)。 我已打开 Wi-Fi 连接(就像我说的位置服务在 Safari、地图甚至 iOS 模拟器中的地图中运行良好)。

-(void)viewDidLoad    
       [super viewDidLoad];
       self.locationManager = [[CLLocationManager alloc] init];

       self.locationManager.delegate = self;
       if(IS_OS_8_OR_LATER)
           NSUInteger code = [CLLocationManager authorizationStatus];
           if (code == kCLAuthorizationStatusNotDetermined && ([self.locationManager    respondsToSelector:@selector(requestWhenInUseAuthorization)])) 

               if([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"]) 
                   [self.locationManager  requestWhenInUseAuthorization];
                else 
                   NSLog(@"Info.plist does not contain NSLocationAlwaysUsageDescription or    NSLocationWhenInUseUsageDescription");
               
           
       
       [self.locationManager startUpdatingLocation];
       [self.FirstMap setShowsUserLocation:YES];    

   - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error    
       NSLog(@"didFailWithError: %@", error);
       UIAlertView *errorAlert = [[UIAlertView alloc]
                                  initWithTitle:@"Error" message:@"Failed to Get Your Location" delegate:nil    cancelButtonTitle:@"OK" otherButtonTitles:nil];
       [errorAlert show];    

有什么我忘记了吗? 谢谢!

【问题讨论】:

***.com/questions/32543754/… 【参考方案1】:

我想也许你需要先阅读这个帖子,因为它在很大程度上是重叠的。

Location Manager Error : (KCLErrorDomain error 0)

但无论如何,我测试了您的代码并得到了与您报告的相同的错误。然后我更改模拟配置。具体来说,在模拟器中,我点击Debug -> Location -> Custom Location... 并输入坐标,我可以定期接收位置事件(以每秒每个样本的速度)。所以问题可能不是来自代码,但来自模拟器本身。希望我的回答有帮助。

更新

我想我误解了你的问题。您想要的是“自动”在模拟器中获取您的当前位置。恐怕xcode中没有这个功能,而是需要使用“将gpx文件添加到项目”,这比使用自定义位置还要工作。但我的意思是,如果你已经成功获得了正确的位置,为什么还要麻烦你从模拟器中获得正确的当前位置,或者替代方案,也许你可以在手机上测试?

【讨论】:

就像我在指定位置时所说的那样,例如伦敦它显示正确。模拟器中地图应用程序中的位置服务也可以工作(因此模拟器获取位置)。 哦,我不知道我在iOS模拟器中无法获取当前位置。我认为如果模拟器上的地图应用程序正确显示(与 Mac 中的地图应用程序相同),那么有一种方法可以显示。谢谢!【参考方案2】:

在 iOS 8 中,您必须首先获得用户的许可才能访问您在 iOS 7 中无法访问本地的位置

if CLLocationManager.locationServicesEnabled() 
        if self.manager.respondsToSelector("requestWhenInUseAuthorization") 
            manager.requestWhenInUseAuthorization()
         else 
            startUpdatingLocation()
        
    

更多信息请点击此链接http://nshipster.com/core-location-in-ios-8/

【讨论】:

【参考方案3】:

检查互联网连接。 如果连接正常,那么 首先转到 Xcode 日志栏并设置“不模拟位置”。然后选择模拟器菜单>调试>位置>设置自定义或选择任何。

【讨论】:

以上是关于iOS 8 - 无法获取当前位置,错误域 = kCLErrorDomain 代码 = 0的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 到 iOS 8 中当前位置纬度和经度的不同行为

如何在IOS SDK 8.0中获取当前位置的经纬度

Flutter iOS - 在加载 Google Maps 小部件之前无法获取 initialCameraPosition 的当前位置

如何在 iOS 上获取当前位置? [复制]

无法获取远程视图控制器并出现错误:错误:域 = _UIViewServiceInterfaceErrorDomain,代码 = 2

错误无法获取 APNS 令牌错误域 = com.firebase.iid 代码 = 1001“(空)”