【问题标题】:Retrieve paired devices which are connected through bluetooth in iOS在 iOS 中检索通过蓝牙连接的配对设备
【发布时间】:2016-11-28 15:47:20
【问题描述】:

我已连接条码扫描设备

Barcode Scanner Information

我想知道它的配对状态。是否与设备连接。

- (void) centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
    {
        self.connectingPeripheral = peripheral;        
        NSLog(@"@@@@@@Peripheral Name is:%@ Identifier:%@ Services:%@",peripheral.name,peripheral.identifier,peripheral.services);
        [self.bluetoothManager connectPeripheral: self.connectingPeripheraloptions: nil];
}

我正在获取有关附近已启用的 Mac 的信息。但我没有在此方法中获取条形码扫描仪信息。

我需要条形码扫描仪是否连接到设备。

谁能建议如何找到条形码扫描仪的连接性。

感谢您的回复,谢谢。

【问题讨论】:

  • 您确定它是蓝牙低功耗设备吗?它的信息页面上不清楚。
  • 更新:我在文档 (barcodedatalink.com/media/pdf/Motorola_CS3000_Brochure.pdf) 上看到“蓝牙,2 类,2.1 版 + 增强数据”。所以你不会在 CoreBluetooth 中找到它(仅适用于低功耗蓝牙)。您可以通过 ExternalAccessory.framework 找到它。
  • @Larme,您能否提出除核心蓝牙和外部附件之外的任何解决方案,因为他们没有获得条形码扫描仪的详细信息。
  • @Vidhyanand 你能得到任何解决方案吗?我也遇到了同样的问题,如果你有解决方案会很有帮助。
  • 你知道怎么做了吗?这是不可能的共识吗?有没有办法使用 EAAccessoryManager 来做到这一点?

标签: ios objective-c bluetooth


【解决方案1】:

如 cmets 中所述,Core Bluetooth 用于蓝牙低功耗,而条形码扫描仪是蓝牙 2.1(经典)。为此,您至少必须使用 IOBluetooth。

检查IOBluetooth framework。坏消息是,Apple 对蓝牙经典开发非常严格,但希望你能做点什么。乍一看,我没有看到任何与 Core Bluetooth 等效的产品。

【讨论】:

  • IOBluetooth 不是只适用于 Mac 应用吗?
【解决方案2】:
  1. 设置应用可以发现几乎所有类型的蓝牙设备,但系统只通知您的应用发现 BLE 设备。
    重新启动您的扫描仪,并确保您的 iPhone 和扫描仪未与任何设备连接。启用您的扫描仪的可发现性。
    如果设置 App 可以找到 Scanner 而您的 demo 却找不到,则 Scanner 不是 BLE 设备,并且从 iPhone 4s 开始不受 iOS 支持。

  2. 如果 Scanner 是 BLE 设备,则需要做一些额外的工作来确定它们是否已连接。

    • 您可以在func centralManager(_ central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData advertisementData: [String : AnyObject], RSSI RSSI: NSNumber)中查看发现的CBPeripheralstate

    • 在连接之前存储 CBPeripheral 的identifier。在func retrievePeripheralsWithIdentifiers(_ identifiers: [NSUUID]) -> [CBPeripheral] 中使用此标识符。并检查您的扫描仪是否在返回数组中。

如果不存储identifier,则无法访问连接的BLE设备。

【讨论】:

    【解决方案3】:

    阅读下面的答案:

    https://stackoverflow.com/a/11128869/5178107

    或许能帮到你。此外,CoreBluetooth 仅允许您访问低功耗蓝牙设备。如果您需要加密,您可以配对这些设备,但通常不需要。但是,没有列出配对设备的 API - 您需要发现提供您感兴趣的服务的设备并提供一个列表,如有必要,请在您的应用程序中使用您自己的 UI。一旦您确定了目标设备,您就可以启动连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      相关资源
      最近更新 更多