2014-11-27 17 views
5

następstwie połączenia z urządzeniem, które jest BLE reklama konkretnej usługi Jestem zainteresowany, aby odkryć tę usługę, dzwonię:iOS Rdzeń Bluetooth: Reklamowany usługa nie jest odkryta obwodowej

[self.peripheral discoverServices:@[[self.class serviceUUID]]]; 

Metoda delegata zostaje wywołana bez błędu, ale liczba usług zwróconych dla urządzenia peryferyjnego wynosi 0, a zatem nie są dalej odkrywane żadne cechy. Czy ktoś ma pojęcie, dlaczego tak się dzieje? Z góry dziękuję!

Poniżej znajduje się pełna treść metody delegata.

- (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]; 
     } 
    } 
} 

Konsola pokazuje:

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 
+1

Jakie jest Twoje urządzenie peryferyjne? Czy wypróbowałeś coś takiego jak aplikacja LightBlue ze sklepu z aplikacjami, aby sprawdzić, czy może wykryć usługi? Czy próbowałeś wyszukać 'nil' zamiast konkretnych usług, aby zobaczyć, co się dzieje? – Paulw11

+0

Działa z LightBlue. Skanowanie 'nil' nie rozwiązało problemu. Próbowałem użyć najnowszego przykładowego kodu dostarczonego przez Nordic, zamiast starego przykładowego kodu, który korzystał z powyższych bloków, a teraz działa :) Dzięki – Gina

Odpowiedz

0

Jedyne co mogę myśleć jest [self.class serviceUUID] nie odpowiada UUID usługi, której szukasz. Czy po zainicjowaniu skanowania filtrujesz według usługi UUID?

Jeśli nie, może to wyjaśnić, dlaczego jesteś w stanie je wykryć i połączyć się z nim, ale nie możesz znaleźć tej konkretnej usługi.