如何在iOS上删除配对的蓝牙设备?

时间:2014-03-31 07:22:07

标签: ios bluetooth bluetooth-lowenergy core-bluetooth ios-bluetooth

我希望我的应用可以删除配对的蓝牙设备。如果设备与iPhone相遇,则该设备无法用于其他设备。 我试过CBCentralManager cancelPeripheralConnection,但它不起作用。他们仍然配对。

或者还有其他应用仍然连接此服务器?

的iPhone5,iOS7

2 个答案:

答案 0 :(得分:7)

您无法在iOS中以编程方式取消配对设备。

cancelPeripheralConnection仅用于断开与设备的应用连接。

  

<强>讨论

     

此方法是非阻塞的,并且任何CBPeripheral类命令都是这样   仍在等待外围设备可能会或可能不会完成。因为其他   应用程序可能仍然与外围设备连接,取消本地   连接不保证底层物理链路   立刻断开了。然而,从应用程序的角度来看,   外围设备被认为是断开连接,以及中央管理器对象   调用centralManager:didDisconnectPeripheral:error:方法   委托对象。

答案 1 :(得分:2)

cancelPeripheralConnection:应该有用。

当您连接外围设备(蓝牙设备)时,您可能正在进行以下操作:

- (void) centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
    [centralManager connectPeripheral: peripheral
                              options: nil];
}  

peripheralcentralManager保持为@property非常重要:

@property (nonatomic,strong) CBPeripheral *connectingPeripheral;
@property (nonatomic,strong) CBCentralManager *centralManager;

然后:

- (void)viewDidLoad
{
    [super viewDidLoad];

    //Starting Up a Central Manager
    self.centralManager = [[CBCentralManager alloc] initWithDelegate:self 
                                                               queue:nil
                                                             options: nil];
}

- (void) centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
    self.connectingPeripheral = peripheral;

    [centralManager connectPeripheral: self.connectingPeripheral
                              options: nil];
}  

然后,当成功建立连接时,中央管理器对象会调用:centralManager:didConnectPeripheral:

之后你可以打电话给你的代码:

[self.centralManager cancelPeripheralConnection:self.connectingPeripheral];