【发布时间】:2017-08-05 11:40:54
【问题描述】:
对于我的一个项目,我目前想要构建一个 Ionic 应用程序,以便为 iOS 和 Android 平台编写一次代码。我正在寻找一种方法来测量两个移动设备之间的距离。一个设备应放置在特定位置,而另一个设备应在进入第一个设备的范围(或更具体地,第一个设备所在的位置)时被检测到。
位于特定位置的设备 1 将连接到互联网,访问该位置的设备 2 也是如此。
我已经阅读了很多不同的实现,但大多数时候它需要 Android 或 iOS 的本机代码。
这是我已经找到的解决方案:
- 蓝牙:每部手机都有蓝牙,所以一旦手机靠近另一部手机应该不难检测到,但这意味着与另一台设备配对,实际上无法测量两台设备之间的距离。
- iBeacons 和 BLE: 我们希望避免在发布时购买大量信标。这意味着我们想创建一个移动应用程序来充当信标,但在许多设备上的 Android 上是不可能的。此外,我们不关心微位置,这意味着我们不会以 100% 的潜力使用信标。
- GPS:在安全方面不太好,无法向两台设备保证该位置是正确的。
- 在位置手动签到:确保设备 2 在设备 1 的位置上运行的最佳方法是在以下位置进行手动检查 地点。但这有点令人沮丧,因为在 全部。
我实际上已经没有想法了。实现应该在 Javascript 中编写一个快速原型,因此选项是有限的。
我在 StackExchange 上读过一篇文章:Stack,但问题是没有描述实现。
换句话说,我希望签到系统知道设备 2 在设备 1 的位置上。即使在请求我们的服务器的 API 之间进行交换,我们如何确定两个设备是由或关闭的?至少设备 2 去了一个特定的位置?
编辑和新闻
为了给可能面临同样情况的人提供更多选择,我联系了一位在 Microsoft 工作的人,他参与了一个名为 ThaliProject 的项目,您可以在 Google 上找到该项目,这是一个用于在移动设备之间进行通信的 PeerToPeer 库。但它不适合这个问题:
很遗憾,Thali 无法解决您的问题。 :( 我们依赖 Android 上的蓝牙 4.2 支持(因此我们既可以是 BLE 中心,也可以是 外围)。
如果您需要在一个 Android 和 iOS 设备,因为 Apple 使用了 蓝牙不工作。
现在 BLE 可以在 Android 和 iOS 之间运行。虽然许多 Android 手机不能是外围的,大部分都可以是中心的。
不同的人正在玩的另一种可能性是 声音。就像是 https://developers.google.com/nearby/messages/overview?hl=en。一个号码 的小组一直在尝试通过超声波进行局部发现 沟通。只需发送挑战并获得回复 超声波,您已经证明设备 1 和 2 非常接近 彼此。
我偶然发现了一个名为:SonicNet.JS 的 JavaScript 库,它能够通过超声波发送数据和字符串,但实际上我很难让它在我的计算机上运行。这可能是一种解决方案,可以避免互操作性问题。
【问题讨论】:
-
您是否尝试过使用 Google Maps API? link我之前曾亲自使用它来做类似的事情(也使用 Firebase 来存储设备的坐标)。
-
不,我没有,但我已经考虑过那个解决方案。问题是我认为它是基于用户的 GPS 坐标?这意味着它很容易被伪造者入侵? link
-
嗯,肯定有一些安全问题......不幸的是,我无法为您提供帮助(尽管您链接到的问题应该是一个很好的参考)。
-
我从昨天晚上开始尝试安装所有东西并测试他们的演示应用程序:video。我可以让两个应用程序相互通信。也许我什至可以在知道的那些设备之间找到一个范围。我猜 Cordoga 插件很容易与 Ionic 集成。它们也是视频中显示的应用程序之间的身份验证。我会尝试测试这个应用程序,看看它是如何工作的,我会尽量让主题保持最新状态,至少提供反馈。
标签: javascript ionic-framework bluetooth-lowenergy ibeacon indoor-positioning-system