iPhone 如何学习新的 WiFi 位置并使用它们进行位置估计
我知道 iPhone 可以并且确实使用 WiFi 邻近度来获取大致位置。显然,只有当天空中的某个数据库知道该 WiFi 热点的大致位置时,才会发生这种情况。我的问题是热点如何进入该数据库?每当 iPhone 具有相当准确的 GPS 位置并检测到 WiFi 时,它是否会自动添加,或者是否有某种手动或编程方式来添加热点?
I know the iPhone can and does use WiFi proximity to get approximate location. This obviously only can occur when some database in the sky knows the approximate location of that WiFi hotspot. My question is how do hotspots get into that db? Is it automatically added whenever the iPhone has a reasonably accurate GPS position and detects the WiFi or is there some manual or programatic way of adding hotspots?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Apple 自 iOS 3.2 起就使用自己的数据库(在此之前他们使用 Skyhook Wireless)。这是通过支持 GPS 的 iOS 设备向 Apple 发送 WiFi MAC 地址来实现的。因此,如果设备具有 GPS 修复功能,它会自动将其看到的所有 WiFi MAC 地址以及 GPS 检测到的位置发送给 Apple。除了主核心位置开关之外,没有其他选项可以更改此行为。用户必须接受 EULA 中所见 WiFi MAC 地址的传输。
通过 WiFi 进行位置检测的工作方式相反,将所有可见的 WiFi MAC 地址发送给 Apple,然后他们会返回位置。实际上,他们通过在手机上缓存尽可能多的 WiFi 地址来对此进行了大力优化。因此,这甚至可以(在某种程度上)在没有任何网络连接的 iPod touch 上运行。
该算法的一个弱点是 MiFi 和类似设备(重新定位 WiFi 热点)。目前,Core Location 并不能很好地丢弃明显错误的 WiFi 位置。例如,在没有 GPS 接收的室内贸易展览会上,由于有许多 MiFi 设备,请做好获取错误位置更新的准备。
回答关于手动添加 WiFi 热点的问题:不,没有办法做到这一点。只需使用运行 iOS 3.2 或更高版本的支持 GPS 的 iPhone/iPad,MAC 地址最终就会进入数据库。根据我的经验,这种情况发生得相当快。
Apple uses their own database since iOS 3.2 (prior to that they used Skyhook Wireless). This works by sending WiFi MAC addresses to Apple by GPS-enabled iOS devices. So if the device has a GPS fix, it automatically sends all WiFi MAC addresses it sees alongside with the GPS-detected location to Apple. There's no option to change this behavior except the master Core Location switch. Users have to accept this transmission of seen WiFi MAC addresses in the EULA.
Location detection via WiFi works the opposite way by sending all seen WiFi MAC addresses to Apple and they respond with the location. Actually they heavily optimize this by caching as many WiFi addresses on the phone as possible. So this even works (to some degree) on iPod touch without any network connectivity.
A weak spot of this algorithm are MiFi and similar devices (relocating WiFi hotspots). Currently, Core Location does not do a very good job of discarding obviously wrong WiFi locations. For instance, on indoor trade shows without GPS reception, be prepared to get wrong location updates because of the many MiFi devices out there.
To respond to your question about manually adding WiFi hotspots: no, there's no way to do that. Just use a GPS enabled iPhone/iPad running iOS 3.2 or higher and the MAC address will make its way into the database eventually. In my experience, this happens rather quickly.
iPhone 使用 Skyhook Wireless 来确定 WiFi 位置。您可以使用他们的提交页面提交您的信息。
编辑:
显然这不再是真的。苹果现在似乎直接从 iOS 设备聚合这些数据。看看评论。
The iPhone uses Skyhook Wireless for determining WiFi location. You can submit your information using their submission page.
EDIT:
Apparently this is no longer true. Apple seems to aggregate this data from iOS devices directly now. See the comments.
在这里复活一个早已死亡的线程来报告我刚刚遇到了苹果 Wi-Fi 定位系统及其自我更新方式的重大概念缺陷。
我正在一艘游轮上部署新的 Wi-Fi 网络,当我们从西班牙造船厂横跨大西洋返回游轮母港时,我们正在对其进行调整和调整。
每当我在下层甲板上且无法看到 GNSS 星座时,我的 iPhone 上的各种支持定位的应用程序就会恢复到造船厂的位置......通过来自造船厂的地面互联网链接,船上的无数苹果设备尽职尽责地报告了一堆未知的 ESSID 和 BSSID,这些信息与设备 GNSS 位置以及 IP 位置相关,大概让苹果对该位置具有高度的信心。看起来 ESSID 优先,因为 BSSID 都是全新的。鉴于自从我们启航以来它就没有更新过位置,并且使用 GeoIP 标记为位于美国多个位置的卫星互联网链接,卫星位置(尤其是不断变化的位置)和 IP 地址之间似乎存在差异地理位置将导致它拒绝更新,转而保留具有更高置信度的先前更新。
最重要的是,不要指望 Wi-Fi 位置对移动物体的精确度有哪怕一丁点的准确。苹果表示,他们无法将火车、飞机或轮船等移动船只上的 ESSID 列入黑名单。这可能是苹果应该考虑重新设计的事情。如果有一种方法可以在 802.11 信标帧中发送位置,那就太好了。
Resurrecting a long-dead thread here to report that I just encountered a major conceptual flaw in Apple's Wi-Fi location sytem and how it self-updates.
I'm in the process of deploying a new Wi-Fi network aboard a cruise ship, and we are tuning and tweaking it as we sail back across the Atlantic from the shipyard in Spain to the ship's home port.
Whenever I'm on the lower decks and out of view of the GNSS constellations, the various location-enabled apps on my iPhone revert back to the location of the shipyard... It would seem that while the ship was in drydock on a temporary terrestrial internet link from the shipyard, the myriad apple devices on board dutifully reported back a bunch of unknown ESSIDs and BSSIDs which were correlated to both the device GNSS location as well as the IP location, presumably giving apple a high degree of confidence in the location. It would seem the ESSID takes precedence because the BSSIDs are all brand new. Given that it hasn't updated the location since we sailed and are on a satellite internet link that GeoIP tags as being in multiple locations in the US, It would seem that discrepancies between satellite position (especially one that is constantly changing) and IP address geolocation would cause it to reject the update in favor of keeping the previous update that has a higher degree of confidence.
Bottom line, don't count on wifi location being even remotely accurate on moving objects. Apple says they hacve no way of blacklisting ESSIDs on moving vessels such as trains, planes, or ships. This is probably something Apple should look at redesigning. It would also be really nice if there was a way to send position in an 802.11 beacon frame.