2013-08-19 20 views
5

Gdy używam iOS bluetooth, kodu:iOS bluetooth scanForPeripheralsWithServices Brak wyników

static NSString * const kServiceUUID = @"1802"; 
[self.manager scanForPeripheralsWithServices:@[ [CBUUID UUIDWithString:kServiceUUID] ] options:@{CBCentralManagerScanOptionAllowDuplicatesKey : @NO }]; 

dlaczego nie ma odpowiedzi? Próbowałem rodzaje par parametrów w metodzie scanForPeripheralsWithServices Sprawdziłem to pytanie: How to get list of available Bluetooth devices?

Moje urządzenie jest już przetestować kilka urządzeń bluetooth 4.0 iPod touch 5 (jailbreak) z iOS 6. Czy ktoś może mi powiedzieć dlaczego.

+0

I z opcją TAK? – Larme

+0

@Larme Również nie działa. Nie rozumiem, co oznacza ten klucz. –

Odpowiedz

7

Skanuj za pomocą usług nil, aby sprawdzić, czy urządzenie peryferyjne, którego szukasz, faktycznie cokolwiek reklamuje. Po wywołaniu centralManager:didDiscoverPeripheral:advertisementData:RSSI: sprawdź dane reklamowe. Po prostu NSLog() go. Jeśli 0x1802 nie jest w nim, to urządzenie peryferyjne nie reklamuje tej usługi, a skaner nie znajdzie go w ten sposób. Aby to poprawić, włącz usługę w konfiguracji reklamy:

NSDictionary *advData = 
@{CBAdvertisementDataServiceUUIDsKey:@[[CBUUID UUIDWithString:@"1802"]]}; 
[peripheralManager startAdvertising:advData]; 
+3

Nadal nie działa dla mnie. Ale odkryłem to. Rozpocząłem skanowanie przed zmianą stanu na CBCentralManagerStatePoweredOn. – david72

+0

dobrym sposobem debugowania jest ustawienie pustej tablicy dla identyfikatorów serviceUUID, aby zobaczyć wszystkie urządzenia peryferyjne. –

1

Czy zalogowałeś się na urządzeniu reklamowym z systemem iOS, które faktycznie reklamuje usługę natychmiastowego ostrzegania (1802)? Możesz wydrukować to wewnątrz wywołania zwrotnego CBPeripheralManagerDelegate peripheralManagerDidStartAdvertising:. Możesz również po prostu zeskanować zero dla obu aplikacji na pierwszym planie i zajrzeć do danych reklam, aby je zweryfikować. Podobnie, jeśli jest to dedykowane urządzenie peryferyjne, wykonaj to samo z urządzeniem, na którym działa menedżer centralny na pierwszym planie. Jeśli nadal nie widzisz urządzenia peryferyjnego (i nie masz dostępu do oprogramowania sprzętowego dla tego urządzenia peryferyjnego), być może kup Tio Packet Sniffer, aby zobaczyć wszystkie pakiety danych przesyłane dookoła.

+0

Od czasu do czasu widziałem urządzenia Bluetooth LE (zwykle te, które źle skonfigurowałem i zapomniałem reklamować określoną usługę podczas reklamowania urządzenia) podczas skanowania w poszukiwaniu określonej usługi. Jeśli usuniesz usługę i uruchomisz skanowanie, możesz spojrzeć na wszystkie urządzenia, które zwróci, aby sprawdzić, czy urządzenie jest odbierane jako reklama, a następnie sprawdzić, jakie usługi reklamuje. –

1

Dziękuję tysiąc razy, ale muszę powiedzieć przepraszam. Następnie przetestowałem swój kod za pomocą innego urządzenia Bluetooth 4.0 LE. To działa! Oznacza to, że moje dawne urządzenia Bluetooth 4.0 nie są w wersji LE. Powiedzieli mi coś niewłaściwego! Dziękuję i przepraszam za zmarnowanie twojego czasu.

+1

Miło dla Ciebie. Źle dla nas, którzy udzielili odpowiedzi. Sądzę, że byłoby uczciwie od ciebie głosować na nas. Pamiętaj, że nic Cię to nie kosztuje, a proponowane rozwiązania mogą pomóc przyszłym odwiedzającym to pytanie. – allprog

+0

@Smeegol jakiego rodzaju urządzenia Bluetooth 4.0 LE użyłeś, próbowałem z urządzeniem Cirago BT8000 LE, ale to nie wykrywa. Proszę wymienić nazwę klucza bluetooth, który możemy użyć dla ios. Z góry dziękuję! –

Powiązane problemy