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

4
我希望我的应用可以移除已配对的蓝牙设备。因为如果设备与iPhone配对,该设备就无法用于其他设备。 我尝试了CBCentralManager cancelPeripheralConnection,但它没有生效。它们仍然被配对。 还是有其他应用程序连接到了这个服务器吗? iPhone5,iOS7
2个回答

9

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

cancelPeripheralConnection 方法只是断开您的应用与设备之间的连接。

讨论

此方法是非阻塞的,仍然挂起到外设的任何 CBPeripheral 类命令可能完成或可能不会完成。由于其他应用程序可能仍然连接到外设,因此取消本地连接并不保证底层物理连接立即断开。但从应用程序的角度来看,外设被视为已断开连接,中央管理器对象调用其代理对象的 centralManager:didDisconnectPeripheral:error: 方法。


1
如果该应用程序不针对App Store,则可能可以使用私有API实现:https://github.com/nst/iOS-Runtime-Headers/blob/master/PrivateFrameworks/BluetoothManager.framework/BluetoothManager.h - Etan

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];

10
我认为您在回答一个关于如何“断开连接”手机与外围设备的问题,而不是如何“解除绑定”手机与外围设备的问题。这是两种不同的情况。 - Maciej Pigulski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接