蓝牙低功耗应用程序,如何实现跨平台构建(iOS-Android)?

10

我正在开发一个与蓝牙LE设备通信的应用程序。 我想要一种方式来避免为iOS和Android分别开发它。 是否有跨平台应用程序框架支持蓝牙LE并且支持良好?

我已经快速查看了像Cordova(PhoneGap),Appcelerator,Xamarin等框架(一般都会使用例如这个列表),但我无法确定它们是否在每个平台上都支持蓝牙LE,并且如果他们确实支持,是通过本机调用(如何访问?)还是通过对本机API的某种包装器(包装器是什么样子?),以及如果是包装器,则其完整性和稳定性如何。

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

编辑 从挖掘各种选项以及以下答案中提取一些信息:

Appcelerator有第三方商业蓝牙插件(https://marketplace.appcelerator.com/apps/3834https://marketplace.appcelerator.com/apps/6611),但没有内置支持。这些插件可以使用吗?
另外,除了蓝牙外,我的需求非常简单:这个应用程序将有很多UI元素,但不是很复杂,只是在许多不同屏幕上放置一堆按钮/复选框/滑块(在两个平台上维护起来非常繁琐)。我还需要对REST API进行一些调用。速度并不是特别重要,应用逻辑不太复杂(大部分现在都是用C编写),原生UI外观也不是那么重要。但重要的是能够在旧版本的平台上运行,最好能够向后兼容到Android 4.3和iOS 7.0。

2
有几个与Phonegap相关的蓝牙低功耗插件。如果您需要UI元素,我认为使用HTML5 / CSS可以轻松获得所有这些元素。但是,为两个环境构建并不像看起来那样容易,因为您需要为每个操作系统提供两个适当的环境。查看文档以及Phonegap的工作原理http://docs.phonegap.com/en/4.0.0/guide_overview_index.md.html#Overview。最后,如果您想将应用程序某天出售,请注意Xamarin和Appcelerator需要许可费,而Cordova是免费的。 - AshBringer
4
对于所有投票关闭此内容的人,请问您能解释一下原因吗?这个问题完全符合主题(参见:“程序员常用的软件工具”等)。它不是在寻求基于意见的建议,而是询问事实(“这在框架X中是否有效?”)。因此,我对问题所在感到困惑。 - Alex I
你能分享一下你最终得出的结果吗(如果你有的话)?谢谢。 - Apperside
@AlexI 你最终使用了哪个解决方案?我目前正在评估Cordova/Ionic与BLECentralPlugin。我发现对于那些来自传统Android开发背景的人来说,使用这样的框架并不直观... - IgorGanapolsky
1
@IgorGanapolsky 我最初开发了一个简单的iOS原生应用,然后使用randdusng/BluetoothLE插件切换到了Cordova。运行良好,没有看到任何与插件相关的问题。 Cordova 6.1适用于iOS 10.x,Android 6.x。 - Alex I
@AlexI 你觉得 Cordova 应用程序的性能和外观与你构建的 iOS 原生应用程序相当吗? - IgorGanapolsky
2个回答

8
我一直在使用Randdusing的Cordova蓝牙LE插件,它适用于Android和iOS(Windows手机仍在开发中)。作为Cordova插件,它旨在与HTML5 / JavaScript应用程序配合使用,但插件本身(所有Cordova插件?)都是用原生代码编写的。 在我的项目早期,我尝试了Evothings,它也有BLE插件,但我发现了一些问题,我不知道这些问题是否已经解决。 我的应用程序在UI要求方面听起来与您的应用程序非常相似,如果您愿意,我可以帮助集成BLE代码 - 但您需要先将“c”重写为JavaScript。 顺便说一句,您要求在旧版Android上使用,但据我所知,BLE仅支持 Android 4.3或更高版本

我一定会查看Cordova插件。你在EvoThings上遇到了什么问题?(它看起来非常不错,但我还没有尝试过)。 - Alex I
你能使用BluetoothLE插件将手机与手机连接起来吗?比如说,通过蓝牙从安卓手机向Windows手机发送数据。 - Lfa
你是否曾经找到过一个适用于Randdusing的iOS Cordova示例应用程序?我从微软那里找到的似乎只支持Android/Windows。 - socca1157

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目前仅支持中心角色。
Qt基于C ++,如果这对您有影响,请注意。

你发布了这个应用吗?我非常好奇想要尝试并评估它的性能和美观度... - IgorGanapolsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接