蓝牙LE应用程序,如何构build它跨平台(iOS-Android)?

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

我已经快速浏览了Cordova(PhoneGap),Appcelerator,Xamarin等框架(通常的嫌疑犯:例如这个列表 ),但是我不知道他们是否(a)在每个平台上都支持蓝牙LE, (b)如果他们这样做,无论是通过本地调用(如何访问?)或某种types的包装到本地API(包装看起来是什么?),和(c)如果它是一个包装,它是多么完整是,它是多么稳定。

如果您有这方面的经验,您能否在不同的框架中总结蓝牙LE支持的状态?

编辑从挖掘到各种选项和从下面的答案一些信息:

  • cordova:几个开源插件,例如https://github.com/evothings/cordova-ble https://github.com/don/cordova-plugin-ble-central https://github.com/randdusing/ BluetoothLE (不是一个完整的列表)。 Evothings是一个不错的Cordova +蓝牙设置。 这些工作在其他基于cordova的应用程序框架,如Appery.io,Telerik AppBuilder,Ionic Creator?

  • Xamarin:这只是通过MonoTouch.CoreBluetooth和Android.Bluetooth使用本地API。 这意味着使用它们的代码实际上并不是跨平台的,但是它们可能和本地API一样工作(因为它们本质上是本地API)。

  • Appcelerator有蓝牙的第三方商业插件( https://marketplace.appcelerator.com/apps/3834和https://marketplace.appcelerator.com/apps/6611 ),没有内置的支持。 这些工作吗?

PS除了蓝牙,我的需求是非常小的:这个应用程序将有很多的UI元素,但不是一个复杂的types,只是一堆button/checkbox/滑块在一堆不同的屏幕上(这将是非常繁琐的维护两平台)。 我还需要对REST API进行一些调用。 速度不是非常重要,没有太多的应用程序逻辑(它现在主要用C语言编写),原生UI的外观并不重要。 然而,在老版本的平台上工作非常重要的,理想情况下是Android 4.3和iOS 7.0。

我一直在使用Randdusing的Cordle插件的蓝牙技术,它适用于Android和iOS(Windows手机还在开发中)。 作为cordova,它被devise为与HTML5 / JavaScript应用程序一起工作,但插件本身(如所有cordova插件?)是用本机代码编写的。 在我的项目早些时候,我尝试了也有BLE插件的Evothings ,但是我发现了一些问题,我不知道这些问题是否已经解决了。 我的应用听起来和用户界面需求非常相似,如果你喜欢,我可以帮你整合BLE代码 – 但是你需要先把你的'c'改写成javascript。 顺便说一句,你要求使用较旧的Android,但AFAIK BLE仅在Android 4.3或更高版本中受支持。

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

目前支持的平台有Andriod,iOS,OSX,Linux。 据说Windows平台支持即将出版的Qt 5.6版本的BLE(真的很期待它)。 BLE相关类很容易使用,Qt提供了两个示例/文档示例项目。 我不确定的事情是在扫描过程中获取制造商特定数据。 现在,我正在连接设备,以获取某些信息,如果我能读取制造商特定的数据,则不需要这些信息。 Qt的BLE目前只支持中心angular色。

Qt是基于C ++的,如果这对你很重要。