簡體   English   中英

(iOS) 如何查看 iPhone 的配對藍牙設備?

[英](iOS) How do I check an iPhone's paired Bluetooth devices?

我想使用 CoreBluetooth(因為我的應用程序必須符合 App Store 的條件)來檢查所有當前已配對和連接的藍牙設備。 這應該不需要任何藍牙掃描,對吧? 我只是想看看系統是用什么配對的。 如果我不能這樣做,掃描是第二個選擇。

我正在嘗試的方法不起作用。 它說藍牙沒有通電並崩潰,但 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 上運行。

仍在解決這個問題,但您也可能看不到鍵盤,因為它不是藍牙 4 設備。 讓我知道你發現了什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM