Bluetooth LE 应用程序,如何跨平台构建它 (iOS-Android)?

Bluetooth LE app, how to build it cross-plaftorm (iOS-Android)?

我正在开发一个与蓝牙 LE 设备对话的应用程序。我想要一些方法来避免 两次 、iOS 和 Android 的开发。是否有对低功耗蓝牙有良好支持的跨平台应用程序框架?

我快速浏览了 Cordova (PhoneGap)、Appcelerator、Xamarin 等框架(通常的嫌疑人:例如 this list),但我无法弄清楚它们是否 (a) 支持蓝牙每个平台上的 LE,以及 (b) 如果他们这样做,无论是通过本机调用(如何访问?)还是本机的某种包装器 API(包装器是什么样的?),以及(c) 如果它是一个包装器,它有多完整,它有多稳定。

如果您有这方面的经验,能否总结一下不同框架对低功耗蓝牙的支持情况?

编辑 通过深入研究各种选项和以下答案获得的一些信息:

P.S。除了蓝牙,我的需求非常少:这个应用程序将有很多 UI 元素,但不是复杂的类型,只是一堆 buttons/checkboxes/sliders 在一堆不同的屏幕上(这将是非常乏味的在两个平台上维护)。我还需要对 REST API 进行几次调用。速度不是特别重要,没有那么多应用程序逻辑(现在大部分是用 C 编写的),原生 UI 外观并不是那么重要。然而,在旧版本的平台上工作 重要的,最好回到 Android 4.3 和 iOS 7.0.

我一直在使用 Randdusing 的 BluetoothLE Cordova 插件,它适用于 Android 和 iOS(Windows phone 仍在开发中).作为 Cordova,它旨在与 HTML5/JavaScript 应用程序一起使用,但插件本身(与所有 Cordova 插件一样?)是用本机代码编写的。 在我的项目的早期,我尝试了 Evothings,它也有 BLE 插件,但我发现了一些问题,我不知道这些问题是否已经解决。 就 UI 要求而言,我的应用听起来与您的应用非常相似,如果您愿意,我可能会帮助您集成 BLE 代码 - 但您需要将 'c' 重写为 javascript 第一的。 顺便说一句,您要求使用较旧的 Android,但 AFAIK BLE 仅在 Android 4.3 or higher.

中受支持

我正在使用 Qt 框架开发支持 BLE 的跨平台应用程序: http://doc.qt.io/qt-5/qtbluetooth-lowenergyscanner-example.html

目前支持的平台有Andriod、iOS、OSX、Linux。 Windows平台据说在即将发布的Qt 5.6版本中支持BLE(非常期待)。 BLE 相关 类 易于使用,Qt 在 examples/documentation 中提供了两个示例项目。我不确定的是在扫描过程中获取制造商特定数据。现在我正在连接设备以获取某些信息,如果我可以阅读制造商特定数据则不需要这些信息。 Qt的BLE目前只支持central role

Qt 基于 C++,如果这对您很重要的话。