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的主要内容,如果未能解决你的问题,请参考以下文章
Flutter iOS - 在加载 Google Maps 小部件之前无法获取 initialCameraPosition 的当前位置
无法获取远程视图控制器并出现错误:错误:域 = _UIViewServiceInterfaceErrorDomain,代码 = 2