短cbuuid与长cbuuid ble连接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显然会在广告包中占用更少的空间,但是数量却更少。

蓝牙SIG将16 bit UUIDs分配给众所周知的服务,并应要求分配给成员组织。当前分配的值为here

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

没有等同于16位UUID的128位。

设备提供的服务列表与广告发布的服务不相同。

由于广告包中的空间有限,因此设备通常仅广告其服务的子集;最“有用”的服务。

例如,即使它很可能会提供心率监视器,它也会通告该心率服务(0x180D),而不是电池或设备信息服务。

这就是为什么在扫描服务0x180A时找不到外围设备的原因-设备信息服务通常不进行宣传。

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...