(iOS)如何检查iPhone的配对蓝牙设备?

我想使用CoreBluetooth(因为我的应用必须符合App Store的条件)来检查所有当前配对和连接的蓝牙设备。 这不应该需要任何蓝牙扫描,对不对? 我只想看看系统配对了什么。 如果我不能这样做,扫描是第二个select。

我正在尝试不工作。 它说,蓝牙没有开机和崩溃,但CBCentralManager的状态是开启的! 任何想法如何解决这个问题,还是我完全脱轨?

所有这些在ViewController中现在:

- (void)viewDidLoad{ [super viewDidLoad]; self.centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:dispatch_get_main_queue()]; [self.centralManager retrieveConnectedPeripherals]; //makes the system call didRetrieveConnectedPeripherals } - (void)centralManager:(CBCentralManager *)central didRetrieveConnectedPeripherals:(NSArray *)peripherals{ NSLog(@"didRetrieveConnectedPeripherals called"); for (CBPeripheral *a in peripherals){ NSLog(a.name); //just log the name for now to see if it recognized it } //but it never ends up logging anything, and I have a BT keyboard paired/connected with the iPhone 5 } //and I get an error at some point, <CBConcreteCentralManager: 0x71ab020> is not powered on - (void)centralManagerDidUpdateState:(CBCentralManager *)manager{ if ([manager state] == CBCentralManagerStatePoweredOff) NSLog(@"CBCentralManagerStatePoweredOff"); if ([manager state] == CBCentralManagerStatePoweredOn) NSLog(@"CBCentralManagerStatePoweredOn"); //this is what gets logged when I run it on an iPhone 5 if ([manager state] == CBCentralManagerStateResetting) NSLog(@"CBCentralManagerStateResetting"); if ([manager state] == CBCentralManagerStateUnauthorized) NSLog(@"CBCentralManagerStateUnauthorized"); if ([manager state] == CBCentralManagerStateUnknown) NSLog(@"CBCentralManagerStateUnknown"); if ([manager state] == CBCentralManagerStateUnsupported) NSLog(@"CBCentralManagerStateUnsupported"); } 

我也一直在努力,希望我所学到的一些东西能够帮上忙。

几件事:

1)初始化CBCentralManager后,您可能会立即调用[self.central retrieveConnectedPeripherals] ,导致“蓝牙未通电”错误。 您需要给CBCentralManager足够的时间连接到蓝牙硬件。

试试这个,

 - (void)viewDidLoad{ [super viewDidLoad]; self.centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil]; } - (void)centralManagerDidUpdateState:(CBCentralManager *)manager { switch (manager.state) { case CBCentralManagerStatePoweredOn: NSLog(@"CBCentral Manager powered on"); [self.centralManager retrieveConnectedPeripherals]; break; case CBCentralManagerStatePoweredOff: ...etc. } 

另外,请注意,CBCentralManager适用于使用蓝牙4.0的iOS设备。 目前,蓝牙4安装在iPhone 4S / 5,iPod 4和iPad 3/4 / mini上。 所以,请注意,您的应用程序不能在iPad 1/2,iPhone 2/3和iPod 2/3上运行。

仍然搞清楚这一点,但也有可能你不能看到你的键盘,因为它不是一个蓝牙设备。 让我知道你发现了什么。