iOS6:CBPeripheral正在连接时被解除分配

use*_*438 13 objective-c core-bluetooth ios6 cbperipheral

我正在尝试连接蓝牙BTLE设备.我发现外设没有问题.

但是,当我尝试连接到外围设备时,我收到了以下警告.

2013-04-05 22:10:3​​6.110 CoreBluetooth [警告] 7DA9E322-D710-081B-4A9D-526DE546B13C,名称="Find My Car Smarter",IsConnected = NO>在连接时被解除分类

此外,没有相关的委托方法被调用:

didConnectPeripheral:
didFailToConnectPeripheral:
Run Code Online (Sandbox Code Playgroud)

几个小时我一直在努力...请帮助.

sar*_*ata 37

简短回答:您需要保留外围设备.

详细解释:核心蓝牙在发现时不知道您是否对此外围设备感兴趣.连接到它是不够的,你需要保留它.

将属性添加到您正在执行所有操作的类中:

@property (strong) CBPeripheral     *connectingPeripheral;
Run Code Online (Sandbox Code Playgroud)

然后在发现设备时将外围设备分配给此属性,然后再返回didDiscoverPeripheral:

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
  DDLogVerbose(@"Discovered peripheral: %@ advertisement %@ RSSI: %@", [peripheral description], [advertisementData description], [RSSI description]);

  [central connectPeripheral:peripheral options:nil];
  self.connectingPeripheral = peripheral;
}
Run Code Online (Sandbox Code Playgroud)

  • 请批准答案(旁边的绿色勾号).它帮助人们知道这个答案是有效的,我可以获得更多的积分和徽章;) (4认同)