问题描述
我猜是这样,但是连接不成功吗?
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时找不到外围设备的原因-设备信息服务通常不进行宣传。
连接到设备后,您可以发现它提供的所有服务。