iOS-Bluetooth-MFI&BLE
来源:互联网 发布:中国菜刀源码 编辑:程序博客网 时间:2024/04/18 10:43
过去的半年里,我一直都在做蓝牙耳机与手机的交互,现在把一些有价值的东西分享给大家。
硬件知识储备:
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耳机
我看网上有很多关于MFI和BLE4.0的使用教程,所以此次文章并没有将这些具体的使用描述出来,而是列出了我做蓝牙耳机与手机交互的一些注意的事项,意在总结归纳,望大家指正交流。
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
- spring mvc 中web.xml配置信息解释
- 上课记录
- 深入理解Spring4框架(六)——自定义Bean属性
- CSVS格式文件的添加
- UI作品
- iOS-Bluetooth-MFI&BLE
- 今日随想 7/24
- 数据库优化之分库分表
- [工厂模式]JAVA设计模式 – 工厂模式的案例
- 拼接2个数组,删除掉其中相同的元素
- android 面试专题(10)
- 欢迎使用CSDN-markdown编辑器
- 为Mac OS X 中的MAMP安装 libmosquitto PHP扩展
- python使用ip代理抓取网页