iPhone 如何学习新的 WiFi 位置以进行位置估计

Posted

技术标签:

【中文标题】iPhone 如何学习新的 WiFi 位置以进行位置估计【英文标题】:How does the iPhone learn new WiFi locations in terms of using them for location estimates 【发布时间】:2011-01-09 13:35:42 【问题描述】:

我知道 iPhone 可以并且确实使用 WiFi 邻近度来获取大致位置。这显然只有在天空中的某个数据库知道该 WiFi 热点的大致位置时才会发生。我的问题是热点如何进入该数据库?是在 iPhone 有相当准确的 GPS 位置并检测到 WiFi 时自动添加,还是有一些手动或编程方式添加热点?

【问题讨论】:

【参考方案1】:

Apple 从 ios 3.2 开始使用他们自己的数据库(在此之前他们使用 Skyhook Wireless)。这通过启用 GPS 的 iOS 设备向 Apple 发送 WiFi MAC 地址来实现。因此,如果设备有 GPS 定位,它会自动将它看到的所有 WiFi MAC 地址与 GPS 检测到的位置一起发送给 Apple。除了主核心位置开关外,没有其他选项可以更改此行为。用户必须接受 EULA 中看到的 WiFi MAC 地址的这种传输。

通过 WiFi 进行位置检测的工作方式相反,将所有看到的 WiFi MAC 地址发送给 Apple,Apple 会以该位置作为响应。实际上,他们通过在手机上缓存尽可能多的 WiFi 地址来极大地优化这一点。所以这甚至在没有任何网络连接的情况下(在某种程度上)在 iPod touch 上也有效。

该算法的弱点是 MiFi 和类似设备(重新定位 WiFi 热点)。目前,Core Location 在丢弃明显错误的 WiFi 位置方面做得并不好。例如,在没有 GPS 接收的室内贸易展览中,由于那里有许多 MiFi 设备,请准备好获取错误的位置更新。

回答您关于手动添加 WiFi 热点的问题:不,没有办法这样做。只需使用运行 iOS 3.2 或更高版本且支持 GPS 的 iPhone/iPad,MAC 地址最终将进入数据库。根据我的经验,这种情况发生得相当快。

【讨论】:

【参考方案2】:

iPhone 使用Skyhook Wireless 来确定 WiFi 位置。您可以使用他们的submission page 提交您的信息。

编辑:

显然这不再是真的了。 Apple 现在似乎直接从 iOS 设备汇总这些数据。见 cmets。

【讨论】:

Apple 不再使用 Skyhook。 (fool.com/investing/general/2010/08/04/…) 有人知道如何在 Apple 使用的数据库中注册吗? @Greg,不是真的。您最好的选择是在此位置使用带 GPS 的 iOS 设备。然后 WiFi 网络将自动添加到 Apple 的数据库中。【参考方案3】:

在这里复活一个早已死去的帖子,报告我刚刚在 Apple 的 Wi-Fi 定位系统以及它如何自我更新中遇到了一个重大的概念缺陷。

我正在一艘游轮上部署一个新的 Wi-Fi 网络,当我们从西班牙的造船厂驶回大西洋回到船的母港时,我们正在调整和调整它。

每当我在下层甲板上并且不在 GNSS 星座的视野范围内时,我 iPhone 上的各种启用定位功能的应用程序都会恢复到造船厂的位置......看起来当船在干船坞时在船厂的一个临时陆地互联网链接上,船上的无数苹果设备尽职尽责地报告了一堆未知的 ESSID 和 BSSID,这些 ESSID 和 BSSID 与设备的 GNSS 位置和 IP 位置相关,大概给了苹果高度的信心在该位置。似乎 ESSID 优先,因为 BSSID 都是全新的。鉴于自从我们航行以来它没有更新位置并且位于 GeoIP 标记为位于美国多个位置的卫星互联网链接上,卫星位置(尤其是不断变化的位置)和 IP 地址之间似乎存在差异地理位置会导致它拒绝更新,以保留先前具有更高置信度的更新。

最重要的是,不要指望 wifi 位置在移动物体上甚至是远程准确的。苹果表示,他们无法将火车、飞机或轮船等移动船只上的 ESSID 列入黑名单。这可能是苹果应该重新设计的东西。如果有一种方法可以在 802.11 信标帧中发送位置,那就太好了。

【讨论】:

以上是关于iPhone 如何学习新的 WiFi 位置以进行位置估计的主要内容,如果未能解决你的问题,请参考以下文章

iPhone 室内定位应用

如何在 iOS7 中以编程方式找到连接 3G 网络或 Wifi 的 iPhone 设备

navigator.geolocation 和 iphone 的缓存问题

iPhone怎么查看是不是连接过的wifi?

为啥mac和iphone无法共享wifi密码

如果 GPS 已打开,Android 设置 API 会打开 WiFi 以提高位置准确性