Objective C 中的蓝牙配对与连接
Posted
技术标签:
【中文标题】Objective C 中的蓝牙配对与连接【英文标题】:Bluetooth Pairing vs. Connection in Objective C 【发布时间】:2015-01-15 20:51:40 【问题描述】:我正在构建一个连接到蓝牙单元的 ios 应用程序,我注意到一旦它“连接”,我就可以使用委托方法 didDiscoverServices
;但是,当我通过并实际“配对”蓝牙设备(弹出一个警告框并要求允许设备与手机配对)时,我不再能够使用didDiscoverServices
方法或其他与CBPeripheral
。
当我调用readValueForCharacteristic
方法时,我得到了“配对”选项。然后我收到“配对”请求。配对后,我无法探索单位特征或服务。
以下是相关代码:
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error
for (CBService *service in peripheral.services)
NSLog(@"Discovered service %@", service.UUID);
[services addObject:service.UUID];
[peripheral discoverCharacteristics:nil forService:service];
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error
for (CBCharacteristic *characteristic in service.characteristics)
NSLog(@"Discovered characteristic: %@", characteristic.UUID);
NSLog(@"Discovered characteristic Properties: %@", characteristic.service);
[peripheral readValueForCharacteristic:characteristic];
【问题讨论】:
您应该在尝试读取特征之前完成服务和特征的发现 @Paulw11 我相信这解决了我的问题。谢谢!如果你想让它成为答案,我会接受。 【参考方案1】:当您读/写需要加密的特征时会启动配对。配对过程使用新交换的密钥建立新连接,这会中断发现过程。
解决方案是在尝试读取操作之前完成服务和特征的发现。
【讨论】:
非常感谢!这解决了我的问题。不幸的是,文档中没有太多关于此的内容。干杯。 是的,Core 蓝牙编程指南在配对/加密部门的细节上非常简单以上是关于Objective C 中的蓝牙配对与连接的主要内容,如果未能解决你的问题,请参考以下文章