原生蓝牙连接设备流程
- 导入 CoreBluetooth 模块
#import <CoreBluetooth/CoreBluetooth.h>
- 初始化蓝牙管理中心,蓝牙管理中心为单例
// queue 传 nil,默认为在主线程创建
CBCentralManager *centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:nil];
iOS 蓝牙接收的数据处理
在确切知道返回数据的长度下,可以使用固定长度的Byte数组接收
NSData *data = characteristics.value;
Byte byteArray[20] = {0};
[data getBytes:&byteArray length:sizeof(byteArray)];
for (int i = 0; i < 20; i++) {
NSLog(@"%02x", byteArray[i]);
}
在不确定返回的byte长度情况下使用(建议) ``` NSData data = characteristics.value; Byte resultByte = (Byte *)[data bytes];
// [data length] 就是byte数组的长度 for (int i = 0; i < data.length; i++) { NSLog(@”%02x”, resultByte[i]); } ```
蓝牙调试
- APP Store 上有很多免费的蓝牙连接测试工具: LightBlue , nRF Connect, 蓝牙助手
- 使用 LightBlue 可以扫描到周围的蓝牙设备并列出信号强度
参考
零基础掌握 iOS 蓝牙开发
iOS开发之玩转蓝牙CoreBluetooth
iOS蓝牙通信数据处理,位运算,数据大小端转换
iOS蓝牙开发笔记(LightBlue调试、大小端转换、进制转换)
蓝牙通信示例