我希望我的应用可以删除配对的蓝牙设备。如果设备与iPhone相遇,则该设备无法用于其他设备。 我试过CBCentralManager cancelPeripheralConnection,但它不起作用。他们仍然配对。
或者还有其他应用仍然连接此服务器?
的iPhone5,iOS7
答案 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];
}
将peripheral
和centralManager
保持为@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];