当我使用:
CBUUID * uuid = [CBUUID UUIDWithString:@"1800"]; // GAP
DEBUG_LOG(@"CBUUID: %@",uuid); // CBUUID: Generic Access Profile
_centralMan = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
[_centralMan scanForPeripheralsWithServices:[NSArray arrayWithObject:uuid]
options:nil];
我找不到我的外围设备,但是当我使用时:
_centralMan = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
[_centralMan scanForPeripheralsWithServices:nil
options:nil];
......它立即出现。
当我连接时,我能够发现/读取/写入我期望的所有服务。我的理解是 GAP 使这成为可能。我也尝试过CBUUID
我知道正在运行的其他服务(特别是“1804”,TX 电源服务),但无济于事;扫描永远不会发现任何东西。
即使服务正在运行(我可以在连接时与它们通信),当我扫描传递服务 UUID 数组时nil
,这个委托方法被调用......
-(void) centralManager:(CBCentralManager *)central
didDiscoverPeripheral:(CBPeripheral *)peripheral
advertisementData:(NSDictionary *)advertisementData
RSSI:(NSNumber *)RSSI {
DEBUG_LOG(@"Found peripheral w/ UUID: %@ RSSI: %@ \n AdvData: %@",peripheral.UUID,RSSI,advertisementData);
DEBUG_LOG(@"Services found: %d",peripheral.services.count);
for (CBService * service in peripheral.services) {
DEBUG_LOG(@"Found service: %@ w/ UUID %@",service, service.UUID);
}
}
…它总是报告“找到的服务:0”。我是否应该期望services
在扫描期间找到的服务填充阵列?(我认为这至少是部分可能的,基于scanForPeripheralsWithServices:[NSArray arrayWithObject:uuid]
options:nil
。)
这可能是我的外围设备服务广告的问题吗?我是否错误地使用了 API?非常感谢任何指导!:-)
PS:我很绿色 w/蓝牙。
PPS:我控制外围设备的源(它是 CC2540DK)。所以我很可能相信问题就在这里。