短 cbuuid 与长 cbuuid ble 连接 ios

short cbuuid vs long cbuuid ble connection ios

我猜是这样,但连接不成功?

0000180A-0000-1000-8000-00805f9b34fb

- (void)scan
{

  
  NSMutableArray *serviceUUIDs = [NSMutableArray new];
  NSDictionary* options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:CBCentralManagerScanOptionAllowDuplicatesKey];
  [serviceUUIDs addObject:[CBUUID UUIDWithString:@"0000180A

  [_sharedManager scanForPeripheralsWithServices:serviceUUIDs options:options];
  
  // callback(@[]);
}

蓝牙 4.0 可以使用 16 位和 128 位 UUID 值。 16位的UUID在广告包里明显少了space,但是数量少了

Bluetooth SIG 分配 16 bit UUIDs for well known services and to member organisations on request. The current assigned values are here

例如 0x1801 是 GATT 配置文件,0x180A 是设备信息服务。

没有 16 位 UUID 的 128 位等价物。

设备提供的服务列表和它宣传的服务不一样。

由于广告数据包中的内容有限 space,因此设备通常只广告其服务的一个子集;最“有用”的服务。

例如,心率监测器会公布心率服务 (0x180D),但不会公布电池或设备信息服务,即使它很可能会提供这些服务。

这就是扫描服务 0x180A 时无法发现外围设备的原因 - 通常不会公布设备信息服务。

连接到设备后,您可以发现它提供的所有服务。