在 centralManager:didDiscoverPeripheral:advertisementData:RSSI 方法中(完整代码如下),我在 NSDictionary 中找到了一个名为 kCBAdvDataServiceUUIDs 的键。我正在尝试读取这个数据来确定设备上可用的服务。这个数据是什么格式的?这个类的描述很简单。
以下是TI CC2250 Mini Development Kit中按键输出的结果:
Unknown (<fff0>)
这里是源代码:
- (void) centralManager: (CBCentralManager *) central
didDiscoverPeripheral: (CBPeripheral *) aPeripheral
advertisementData: (NSDictionary *) advertisementData
RSSI: (NSNumber *) RSSI
{
printf("Discovered %s\n", [[aPeripheral name] cStringUsingEncoding: NSUTF8StringEncoding]); // TODO: Remove printfs
printf(" RSSI: %s\n", [[RSSI stringValue] cStringUsingEncoding: NSUTF8StringEncoding]);
NSArray *keys = [advertisementData allKeys];
for (int i = 0; i < [keys count]; ++i) {
id key = [keys objectAtIndex: i];
NSString *keyName = (NSString *) key;
NSObject *value = [advertisementData objectForKey: key];
if ([value isKindOfClass: [NSArray class]]) {
printf(" key: %s\n", [keyName cStringUsingEncoding: NSUTF8StringEncoding]);
NSArray *values = (NSArray *) value;
for (int j = 0; j < [values count]; ++j) {
NSObject *aValue = [values objectAtIndex: j];
printf(" %s\n", [[aValue description] cStringUsingEncoding: NSUTF8StringEncoding]);
printf(" is NSData: %d\n", [aValue isKindOfClass: [NSData class]]);
}
} else {
const char *valueString = [[value description] cStringUsingEncoding: NSUTF8StringEncoding];
printf(" key: %s, value: %s\n", [keyName cStringUsingEncoding: NSUTF8StringEncoding], valueString);
}
}
}
以下是TI CC2250 Mini Development Kit中按键输出的结果:
Discovered (null)
RSSI: -36
key: kCBAdvDataServiceUUIDs
Unknown (<fff0>)
is NSData: 0
Discovered SimpleBLEPeripheral
RSSI: -37
key: kCBAdvDataServiceUUIDs
Unknown (<fff0>)
is NSData: 0
key: kCBAdvDataLocalName, value: SimpleBLEPeripheral
key: kCBAdvDataTxPowerLevel, value: 0