iOS-Bluetooth-MFI&BLE
来源:互联网 发布:想从事网络方面的工作 编辑:程序博客网 时间:2024/04/27 01:33
原文地址:http://blog.csdn.net/yyang_Z/article/details/52016793?locationNum=4
硬件知识储备:
Bluetooth:是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换。注:蓝牙4.0非蓝牙2.1的升级,使用了新的协议
MFI:通俗的讲就是采用External Accessory Native的传统蓝牙交互的代名词,因为这种交互需要苹果MFI认证。
BLE(Bluetooth Low Energy):蓝牙省电模式,支持小规模的数据传输,是广大做iOS应用与蓝牙交互,不想通过MFI认证的开发者们的福音。
MFI,蓝牙2.1的交互:
- 使用ExternalAccessory.framework,具体可参考https://developer.apple.com/reference/ExternalAccessory的官方文档及EA的Demo
- 声明App支持的协议,通常推荐使用反DNS形式的命名协议,例:com.xx.protocol
- 通信步骤:创建EASession,使用NSInputStream和NSOutputStream收发数据包,数据格式通常由与交互设备通信协议决定。
- 与设备交互步骤:获取连接的外设,实现NSStreamDelegate的协议,主要包含数据的拆包、封装和分发(数据包,数据解析model的建立)
- 大数据的传输需要拆分多个数据包收发,此时还要小心外设的断开造成的数据的丢失或者错乱,需要做相应Exception的处理
- 注册EAAccessoryDidConnectNotification及EAAccessoryDidDisconnectNotification通知,对设备的断连及时做处理,注意与BLE断连的不同
- App进入后台,防止通讯断开的操作,需设置Required background modes的选项App communicates with an accessory
- MFI设备与App的交互只需要在手机蓝牙设置界面进行简单的搜索、连接和断开操作,注意与BLE连接的不同
- 待用户点击连接了手机蓝牙设置中的某个外设,进入App后,需要做大约10~30s的尝试获取设备操作,因为可能系统的原因,设备获取有延迟,即:[[EAAccessoryManager sharedAccessoryManager] connectedAccessories];
- App与设备断开操作的事件处理,例:用户的退出账户,因为MFI设备与App的连接因业务需要,也可能存在设置绑定功能
BLE,蓝牙4.0的使用:
- 使用CoreBluetooth.framework,具体可参考https://developer.apple.com/reference/corebluetooth的官方文档
- 建议使用封装BLE的一些第三方框架,简单易控,例BabyBluetooth等
- 苹果手机的蓝牙Mac地址获取不到,但可生成UUID,唯一标示设备
- 与设备交互步骤:实现CBCentralManagerDelegate协议,设置过滤条件,扫描蓝牙外设列表,连接外设,发现Services和搜索到的Characteristics,读写数据
- 外设与App的蓝牙4.0数据交互,需要在APP里进行BLE的搜索、连接,手机蓝牙设置界面的简单连接操作一般在首次连接后进行,当然支持外设处于配对状态时,直接在其中搜索到蓝牙2.1设备,进行传统蓝牙交互,例,传递音乐数据等
- BLE断连无须注册通知,会有断连的回调,同时通过centralManagerDidUpdateState检测蓝牙开启关闭状态,实现断连的处理
- 与MFI相似,App进入后台,防止通讯断开的操作,需设置Required background modes的两个选项:App communicates using CoreBluetooth与App shares data using CoreBluetooth
- 当中心设备周围统一的peripheral很多时,会出现连接、数据交互错误的问题,需要避免。必要时可根据获取外设的RSSI值来连接自己的设备
- 蓝牙4.0的交互不稳定,连接多次后可能还会随时断开,广播包中断,远程连接可能需要回连的时间也会较长
- BLE的连接成功后并没有真正绑定设备,绑定操作是在可读写数据后,App中也可模仿手机蓝牙设置,做绑定UUID操作,方便外设的直接连接
- IPhone4设备或者iOS8.0系统以下的设备,BLE交互不稳定,可能会出现连接不成功或搜索不到相应BLE设备等问题
- 标准服务不用配对,系统弹出配对提示只是自定义服务的结果,BLE设备只进行简单的心率数据,运动步数等交互时,无须自定义服务
- 蓝牙4.0的应用一般有手环,监测心率设备,支持BLE蓝牙耳机等,据调研,BLE可与MFI绑定交互(因为手机蓝牙设置中一般是搜索不到BLE设备的),这可能是App外可直接连接BLE设备的一种支持,例Jabra耳机
阅读全文
0 0
- iOS-Bluetooth-MFI&BLE
- iOS-Bluetooth-MFI&BLE
- BLE/Bluetooth Low Energy
- 蓝牙Bluetooth(BLE)
- Android - BlueTooth BLE 开篇
- 苹果MFI bluetooth认证开发过程:iDevice和accessory
- BLE(BLuetooth Lower Energy)蓝牙
- 蓝牙 BlueTooth Low Energy (BLE)
- iOS MFi App端开发步骤
- iOS开发-App上架的MFi问题解决
- iOS BLe
- IOS bluetooth
- iOS连接外设的几种方式小结,包括MFi的和非MFi的
- BlueTooth: 低功耗蓝牙bluetooth 4.0 (BLE) CC2540
- Android:BLE(Bluetooth Low Energy)开发
- BLE(Bluetooth Low Energy)---first part
- 【BLE】近期学习Blutetooth与BLE的总结——关于Bluetooth与BLE的科普
- iOS模拟器调试BLE
- 【web前端自动化工作环境配置】8. 依赖管理工具bower的基本用法
- 生产环境使用elasticsearch遇到的一些问题以及解决方法(不断更新)
- js 获取屏幕各种宽高的方法
- Mac 配置gradle环境
- React Native报Super expression error must either be null or a function错误分析
- iOS-Bluetooth-MFI&BLE
- 编程之路
- 《真实的幸福》 -豆瓣评分8.2
- Linux-搭建http服务器及配置文件详解,认证用户
- SLF4J简介
- 机器学习-学习笔记 线性模型
- 吝啬SAT是NP-完全问题
- 程序开发之企业网站设计制作实战-Bootstrap
- create-react-app慢的解决方法(推荐阅读)