Dopo il collegamento ad un dispositivo di BLE che è la pubblicità di un servizio specifico che mi interessa, per scoprire questo servizio, sto chiamando:iOS Nucleo Bluetooth: servizio pubblicizzato non viene scoperto sulla periferica
[self.peripheral discoverServices:@[[self.class serviceUUID]]];
Il metodo delegato - (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error
viene chiamato senza errori, tuttavia il numero di servizi restituiti per la periferica è 0 e pertanto non vengono rilevate ulteriori caratteristiche. Qualcuno ha qualche idea del perché questo sta accadendo? Grazie in anticipo!
Di seguito è riportato il corpo completo del metodo delegato.
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error {
if (error) {
NSLog(@"didDiscoverServices failed: %@", error);
return;
}
NSLog(@"didDiscoverServices succeeded for peripheral: %@.", peripheral.name);
NSLog(@"Number of services: %d", peripheral.services.count);
for (CBService *s in peripheral.services) {
NSLog (@"Discovered service UUID: %@", s.UUID);
if ([s.UUID isEqual:[self.class serviceUUID]]) {
NSLog(@"Discover characteristics...");
[self.peripheral discoverCharacteristics:@[[self.class controlPointCharacteristicUUID], [self.class packetCharacteristicUUID]] forService:s];
}
}
}
La console mostra:
2014-11-27 15:54:51.933 k[197:13362] didDiscoverServices succeeded for peripheral: BootK
2014-11-27 15:54:51.934 k[197:13362] Number of services: 0
Qual è la tua periferica? Hai provato qualcosa come l'app LightBlue dall'app store per vedere se può scoprire i servizi? Hai provato a cercare 'nil' piuttosto che i servizi specifici per vedere cosa succede? – Paulw11
Funziona con LightBlue. La scansione di 'nil' non ha risolto il problema. Ho provato a utilizzare alcuni dei codici di esempio più recenti forniti da Nordic, invece del vecchio codice di esempio che utilizzava i blocchi di cui sopra, e ora funziona :) Grazie – Gina