Когда я использую:
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: я довольно зеленый с Bluetooth.
PPS: Я контролирую источник на периферию (это CC2540DK). Так что я бы с такой же вероятностью поверил, что проблема там, как и здесь.