我是第一次使用CoreBluetooth,并试图弄清楚如何将设备列表过滤到只有RFID scanner .我了解到,各种类型的设备有pre-defined Service UUIDs种,但我找不到任何一种明确提到、甚至似乎与RFID scanner 相匹配的服务.

然而,在次要设备类别表中,手持式RFID scanner 的位5-2应为1000.不过,我对它的go 向感到困惑.设备类别部分描述了在定义各种类型的设备时使用23-0位的内容,因此我知道这5-2位将进入整个23-0位集合...但我不确定这如何与服务UUID重叠/交互,或者它们是否完全交互.

例如,我发现的常见示例是Heart Rate service被定义为缩短的UUID 0x180D,但这将是32位,而不是像上面的Device Class那样的24位.

是否有适用于RFID scanner 的蓝牙服务UUID?如何筛选发现的设备列表,以便只能显示RFID scanner ?

func startBluetoothScan() {
    print("starting bt scan...")
    self.centralManager.scanForPeripherals(withServices: nil,
        options: [CBCentralManagerScanOptionAllowDuplicatesKey: false]
    )
    print("started bt scan")
}

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String: Any], rssi: NSNumber) {
    if self.discoveredPeripherals[peripheral.identifier] == nil {
        print("did discover bt peripheral (strength: \(rssi)): \(peripheral.name ?? "-") | \(advertisementData[CBAdvertisementDataLocalNameKey] ?? "-")")
        self.discoveredPeripherals[peripheral.identifier] = CBPeripheralInfo(peripheral: peripheral, data: advertisementData, rssi: rssi)
    }
}

推荐答案

蓝牙SIG定义了某些服务--您可以举一个这样的例子:心率服务.这些服务都包含在assigned numbers document项中.

这些分配的服务使用16位值,该值被替换到基本UUID 0000xxxx-0000-1000-8000-00805F9B34FB中-心率服务的实际服务代码是0000180d-0000-1000-8000-00805F9B34FB

核心蓝牙识别这些16位服务标识符并为您进行替换.

分配的关贸总协定服务ID列于第3.4.1节.

您提到的1 0 0 0位位于外围设备类别部分,而不是GATT服务部分.

似乎没有为RFID scanner 定义的服务.我怀疑,这样的设备很可能使用HID蓝牙配置文件,并以键盘的形式出现,在这种情况下,iOS应用程序将无法通过核心蓝牙看到它.

制造商也可以 Select 通过他们自己的GATT服务公开他们的设备;您需要参考特定设备的文档.

Ios相关问答推荐

更改文本在Flutter 中的位置

在工作表上移动图像SwiftUI

阿拉伯文变音符号(Harakat)在文本对齐的UILabel中未对齐

使用SWIFT传输表示时的条件文件表示格式

验证开发人员应用程序证书是否已在您的设备上验证

设置托管在DigitalOcean上的iOS通用链接

在滚动视图中固定页眉,但在页眉上方嵌入元素

iOS 16.4,SwiftUI 底部工作表有时会忽略presentationDetents

在Xcode 15中为具有@Binding的视图创建SwiftUI #预览的方法

在 Swift 中从 Objective C 集合调用块

从父母到子元素的 Swift Pass 事件

try 在 iOS 中分发 Flutter 应用程序时出现Invalid Provisioning Profile Signature错误

iOS,Swift 5,AppDelegate open url / .onOpenUrl - 如何找到调用我的自定义方案的调用应用程序

如何在 Swift 3 中根据 UIImage 的大小/比率调整 UIImageView 的大小?

iOS swift从另一个数组中删除一个数组的元素

为信用卡输入格式化 UITextField,例如 (xxxx xxxx xxxx xxxx)

如何使用 Contacts Framework 获取 iOS 9 中的所有联系人记录

如何确定 WKWebView 的内容大小?

xcode 5.1:libCordova.a 架构问题

Xcode中的终端窗口?