CLLocationManager 不适用于非无线连接?

Posted

技术标签:

【中文标题】CLLocationManager 不适用于非无线连接?【英文标题】:CLLocationManager does not work for non-wireless connection? 【发布时间】:2011-03-30 21:09:09 【问题描述】:

我有一个 Mac 应用程序并想使用核心位置,但是,当我不在 wifi 上但使用以太网电缆连接时,核心位置 (CLLocationManager) 报告操作无法完成。

确切的错误信息是

The operation couldn't be completed. (kCLErrorDomain error 0.)

如果我总是连接到同一个路由器(即 wifi 或以太网电缆),为什么 CLLocationManager 仅适用于 wifi 而不适用于以太网连接?

任何建议将不胜感激。

谢谢。

编辑:

这是一些代码。

我将我的位置管理器定义为这样的实例变量

    locationManager = [[CLLocationManager alloc] init];
    [locationManager setDelegate:self];
    [locationManager setDistanceFilter:ICMinimumUpdateDistance]; 

然后我像这样监控位置管理器的委托方法,

    - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation


// Filter out points before the last update 
NSTimeInterval timeSinceLastUpdate = [newLocation.timestamp timeIntervalSinceDate:dateOfLastUpdate];

if (timeSinceLastUpdate > 0)

    //Do stuff



我还使用委托方法检查错误

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error

    NSLog(@"Location Error:%@", [error localizedDescription]);

在上面的代码中,位置管理器使用无效的 newLocation(错误的时间戳)进行更新,然后位置管理器调用委托错误方法。

【问题讨论】:

但是当您无线连接时它可以工作?你能发布一些你正在使用的代码吗? 是的,它可以无线工作,但在我使用以太网连接时失败了。请查看我正在使用的代码的更新。 【参考方案1】:

由于您的笔记本电脑中没有 GPS,OSX 上的 core-location 使用 (skyhook) 服务或类似的服务。

该服务维护一个查询 WIFI 接入点及其位置的数据库(可能由启用 GPS 和 wifi 的 iPhone 更新)。

因此,通过输入您可以看到的接入点列表以及它们的相对信号强度,系统能够大致确定您所在的位置。

因此,您需要启用 wifi 和有效的互联网链接(但互联网不需要通过 wifi,您可以不关联机场)

【讨论】:

这很有趣。今晚回家后我会试试的。【参考方案2】:

我也注意到了这一点。如果您在通过以太网连接到 Internet 时打开“系统偏好设置”中“日期和时间”窗格的“时区”选项卡,它会显示连接到无线网络以确定您当前的位置。这让我相信 CoreLocation 实际上确实需要无线连接。

【讨论】:

你知道技术原因吗?最终这两种方法都通过同一个路由器。 我不确定。你会认为这不会有什么不同。奇怪的是,如果我通过以太网连接,我使用 CoreLocation 的应用实际上会返回上次成功检索位置时的位置。 是的,我的也是这样。如果在第一次更新后监控委托错误方法,会报错。 是的,它仅限于 WiFi 真是太可惜了。希望苹果能改变这一点。

以上是关于CLLocationManager 不适用于非无线连接?的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式排除非 golang 文件不适用于 inotifywait

Alfresco Share - 搜索不适用于非管理员用户

css 过渡持续时间不适用于矢量效果:非缩放笔画

Apple Push Notification 不适用于非开发的临时构建

当应用程序处于非活动状态时,GCM 推送通知不适用于 iOS

GitHub 操作工作流计划不适用于非默认分支