如何判断两部手机是否靠得很近?

How can you tell if two phones have come close to each other?

我正在尝试实现一个移动 phone 应用程序,如果两个用户在现实世界中彼此靠近,它会发出一个标记。

我正在寻找一种解决方案,该解决方案不需要对用户主动打开应用程序 phone 即可做出此决定并升起标志。

这可能吗?也许通过蓝牙,或者也许通过使用从每个 phone 上传的 GPS 和时间数据,并让服务器确定用户是否靠得足够近?

我正在寻找小于 20 英尺的精度。

如果没有 OS 支持,我认为您无法做到这一点。 Apple 的 Core Location 框架允许您设置 iPhone 来侦听 iBeacon 并唤醒 phone 并在检测到 iBeacon 时在后台启动您的应用程序,但您不能创建 iPhone 广播 当 phone 被锁定并且您的应用程序被暂停时的 iBeacon 信号。苹果可以,你不行

我相信 iBeacons 所基于的底层 BLE 框架具有相同的限制。

Apple 已与 public 卫生官员合作,按照您描述的方式追踪 COVID19 暴露情况。您在 phone 上安装该应用程序,它使用 BLE 广播 ID 并监听其他用户 运行 该应用程序,并记录它看到的其他应用程序用户。如果有人感染了 COVID,有一种方法可以向感染者附近的每个人发送通知。

编辑:

很可能可以使用记录的 GPS 数据和服务器来执行此操作,但它需要电池、网络和计算资源。 (我想这不符合您的要求,因为该应用程序必须在后台处于活动状态并且 GPS 必须始终通电。)GPS 需要大量电量,除非您 运行 GPS 经常让您错过您想要的小于 20 英尺的距离。如果您确实收集了持续不断的 GPS 数据,则必须将其全部上传,然后进行大量批处理以找到邻近命中。您希望在第一次通过时使用具有相当大的距离阈值的粗略计算来丢弃附近没有其他设备的数据,然后在非常小的数据集上进行第二次通过。即使采用这种方法,也意味着大量的数字运算。