第一篇:介绍iOS连接外设的方式以及选择蓝牙4.0的原因

来源:互联网 发布:机器码算注册码软件 编辑:程序博客网 时间:2024/04/29 16:31

之前做的关于app通过蓝牙连接外设的,并获取外设传输的信息或发送命令控制外设搜集了一些资料,现在整理一下氛围三篇
第一篇:介绍iOS连接外设的方式以及选择蓝牙4.0的原因
第二篇:CoreBluetooth官方文档翻译
第三篇:CoreBluetooth的使用
关于采用BLE4.0还参考stackoverflow上一个讨论帖
http://stackoverflow.com/questions/7852228/is-there-a-way-to-access-bluetooth-4-0-low-energy-devices-in-ios

一、iOS 连接外设的几种方式

现在智能家居和智能硬件的发展,越来越多的app开始于硬件连接,用来获取硬件的相关信息或者发送指令控制硬件来提供服务。
这里写图片描述
总结一下,图中带MFI字样的表示该连接方式需要硬件集成MFi芯片,做MFi认证。

第一类连接方式是—网络接口,通过网络接口建立socket使用TCP/IP进行通信。
(1)使用Wi-Fi连接
优点:不需集成MFI,只需硬件有无线网卡,手机与硬件在同一局域网中就可以实现socket通信
缺点:wifi不稳定,易断开;如果没有wifi,需要建立热点,步骤复杂
(2)USB热点共享
优点:不需MFI芯片,使用有线连接,稳定
缺点:步骤复杂
(3)NCM,就是把USB端口虚拟成标准的网络端口,然后手机和外设就能通过有线网络直连
可以理解成手机和外设通过一跟网线连起来了,然后就可以用socket通过TCP,UDP进行通信了。
优点:有线连接,非常稳定,带宽足够;也不依赖移动网络信号;
缺点:需要集成MFI芯片并进行MFI认证,有一定门槛。更变态的是这么好的一种方式,目前苹果只提到可以在它自己的CarPlay使用。

第二类连接方式—EAP(External Accessory Protocol外部设备协议)
苹果推荐使用的连接外设方式,但是需要外设集成MFI芯片。手机端只需使用系统提供的ExternalAccessory.famework,并在info.plist中配置好协议字符串(Supported External Accessory protocols)。当iOS 设备通过USB线或者蓝牙连接到对应硬件时,iOS系统会把符合MFI认证要求的外设抽象成了一个流对象,App通过指定的协议字符串来创建一个EASession类的实例来访问到该流对象,就能通过NSInputStream和NSOutputStream跟硬件件进行通信了。
它有两种模式,
一种是叫EASession的模式,它带宽相对较低,但是允许同时通过多个协议字符串创建多个会话,也就是说直接支持多个通道;
一种是Native Transport的模式,这种模式的优点是带宽足够大,理论值是100MB以上,但是不支持多通道,如果业务层需要支持多数据通道的话需要App自己进行通道的复用与拆分,并且Native Transport需要iPhone工作在USB host模式,硬件需要支持USB 模式切换。
关于如何使用EAP跟外部设备进行通信,可以参考苹果官方的demo(https://developer.apple.com/library/ios/samplecode/EADemo/Introduction/Intro.html)进行入门和学习。

第三大类就是BLE,低功耗蓝牙,是iOS6.0以后才支持的连接方式。
优点:不需要集成MFI芯片做认证,功耗低,手机端开发也相对简单,集成iOS系统提供的CoreBluetooth.framework就行。
缺点是:带宽很低,一般适合于只需要传输少量数据的场景。
关于如何使用BLE进行硬件连接,可以参考本人在github的一个小开源项目(https://github.com/luoxubin/BlueTooth4.0)

我们需要的是和没有集成MFI的医疗设备连接,并且app要发布到AppStore,所以采用BLE

1 0
原创粉丝点击