我查看了BLE规范,发现蓝牙SIG已预先定义了许多服务,如心率。我只是想知道我是否可以自己定义服务?如果可以的话,有没有可用的例子?感谢。
答案 0 :(得分:7)
是的,完全有可能自己定义服务。
服务和特征都由UUID标识。例如,BLE Services页面列出了所有标准化服务和分配的UUID。
正如您所见,心率服务使用0x180D
,这是一种仅为标准化服务保留的16位简短形式。定义自己的服务时唯一的要求是使用128位长格式UUID。
使用uuidgen
(在Mac OS X上提供)自行生成随机(唯一)UUID:
uuidgen
# example result: 94B01578-5603-4D5A-8DFF-9365A1C4AC93
您可以使用它来发布和识别您自己的服务。这可以在您自己的自定义硬件上完成,也可以通过iOS上的软件完成(因为您提到了核心蓝牙)。
创建CBMutableService
:
CBUUID *serviceUUID = [CBUUID UUIDWithString:@"94B01578-5603-4D5A-8DFF-9365A1C4AC93"];
CBMutableService *myService = [[CBMutableService alloc] initWithType:serviceUUID primary:YES];
// add some characteristics, also identified by your own custom UUIDs.
最后看addService:&
CBPeripheralManager
{{1}} {}开始发布您的自定义服务。
使用iOS设备发布此服务后,您可以使用startAdvertising:类使用其他iOS设备或Mac扫描并连接到该服务。
答案 1 :(得分:2)
这是一个演示应用程序,其中包含在iOS设备上设置您自己的蓝牙LE服务的示例:SimpleShare
您需要生成应用程序服务所特有的UUID。 This site将生成一个供您使用。