没有合适的资源?快使用搜索试试~ 我知道了~
首页iOS蓝牙开发数据实时传输
iOS蓝牙开发数据实时传输
13 下载量 70 浏览量
更新于2023-05-15
收藏 50KB PDF 举报
主要为大家详细介绍了iOS蓝牙开发数据实时传输,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
资源详情
资源推荐
iOS蓝牙开发数据实时传输蓝牙开发数据实时传输
主要为大家详细介绍了iOS蓝牙开发数据实时传输,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一
下
随着iOS项目开发 很多app需要通过蓝牙与设备连接
蓝牙开发注意:
先定义中心设备和外围设备以及遵守蓝牙协议
@interface ViewController()<CBCentralManagerDelegate,CBPeripheralDelegate>
@property (strong, nonatomic) CBCentralManager *manager;
@property (nonatomic, strong) CBPeripheral *peripheral;
@property (nonatomic, weak)NSTimer * connentTimer;
@end
再实现delegate方法
1.判断蓝牙状态,如成功则扫描指定UUID设备(如不指定UUID,则无法后台持续连接)
2.当发现指定设备后,连接该设备
3.当连接指定外围设备成功,编写定时器,每秒读取1次RSSI
4.当监听到失去和外围设备连接,重新建立连接
5.当读取到RSSI值,打印出它的值
//蓝牙状态
- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
NSString * state = nil;
switch ([central state])
{
case CBCentralManagerStateUnsupported:
state = @"The platform/hardware doesn't support Bluetooth Low Energy.";
break;
//应用程序没有被授权使用蓝牙
case CBCentralManagerStateUnauthorized:
state = @"The app is not authorized to use Bluetooth Low Energy.";
break;
//尚未打开蓝牙
case CBCentralManagerStatePoweredOff:
state = @"Bluetooth is currently powered off.";
break;
//连接成功
case CBCentralManagerStatePoweredOn:
[self.manager scanForPeripheralsWithServices:nil options:nil];
state = @"work";
break;
case CBCentralManagerStateUnknown:
default:
;
}
NSLog(@"Central manager state: %@", state);
}
//查找设备
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
//每个蓝牙设备有自己唯一的标识符,根据标识符确认自己要连接的设备
if ([peripheral.identifier isEqual:self.peripheral.identifier])
{
self.peripheral = peripheral;
//数据连接定时器
self.connentTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(connentPeripheral) userInfo:@"timer" repeats:YES];
[self.connentTimer fire];
}
}
- (void)connentPeripheral {
//连接外设
self.manager.delegate = self;
[self.manager connectPeripheral:_peripheral options:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:CBConnectPeripheralOptionNotifyOnDisconnectionKey]];
}
//连接成功后调用
- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral
{
NSLog(@"Did connect to peripheral: %@,%@", peripheral,peripheral.name);
[peripheral setDelegate:self]; //查找服务
[peripheral discoverServices:nil];
[self.connentTimer invalidate];
//监测设备是否断开了
// [self createWorkDataSourceWithTimeInterval:1];
}
//当监听到失去和外围设备连接,重新建立连接
//这个方法是必须实现的,因为蓝牙会中断连接,正好触发这个方法重建连接。重建连接可能造成数秒后才能读取到RSSI。
- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error
{
[self.manager connectPeripheral:peripheral options:nil];
}
- (void)centralManager:(CBCentralManager *)central didFailToConnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error
{
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功