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

时间:2013-04-06 03:18:51

标签: objective-c ios6 core-bluetooth cbperipheral

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

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

  

2013-04-05 22:10:3​​6.110 CoreBluetooth [警告] 7DA9E322-D710-081B-4A9D-526DE546B13C,Name =“Find My Car Smarter”,IsConnected = NO>正在连接时被解除密码

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

didConnectPeripheral:
didFailToConnectPeripheral:

我几个小时都在苦苦挣扎...... 请帮忙。

1 个答案:

答案 0 :(得分:37)

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

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

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

@property (strong) CBPeripheral     *connectingPeripheral;

然后在从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;
}