2013-04-03 7 views
8

Pracuję z podstawową strukturą bluetooth. Próbuję stworzyć urządzenie peryferyjne za pomocą tej struktury. My obwodowych reklamować dane przy użyciu:Klucz reklamowy "Dane producenta" jest niedozwolony w CoreBluetooth

manager=[[CBPeripheralManager alloc]initWithDelegate:self queue:nil]; 
[manager startAdvertising:dictionary]; 

tutaj słownika że jestem przejściu dla reklamy jest:

NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys: 
            @"name", CBAdvertisementDataLocalNameKey,@"some other data",CBAdvertisementDataManufacturerDataKey,nil]; 

kiedy jestem uruchamiania aplikacji otrzymuję ostrzeżenie: Kluczem reklama „Producent Dane "są niedozwolone w CoreBluetooth

i nie otrzymuję" niektórych innych danych ", które wysłałem przy użyciu klucza CBAdvertisementDataManufacturerDataKey po stronie centralnej. Otrzymuję nazwę po stronie centralnej. Jak więc wysłać inne dane z danymi reklamowymi?

+0

znalazłeś rozwiązanie w tej sprawie? – civiac

+0

@civiac: Nie, w rzeczywistości nie można zmienić danych producenta. Robiłem aplikację demo, więc użyłem danych name_some (różnicę z _) i wykonałem odpowiednie przetwarzanie po stronie centralnej. dalej W moim przypadku dostałem urządzenie BLE zgodnie z moimi potrzebami. –

Odpowiedz

9

Jako dokumentacja CBPeripheralManager na startAdvertising stwierdza:

Opcjonalny słownik zawierający dane, które chcesz reklamować. Możliwe klucze słownika adsData są szczegółowo opisane w CBCentralManagerDelegate Protocol Reference. To powiedziawszy, tylko dwa klucze są obsługiwane dla obiektów menedżera urządzeń peryferyjnych: CBAdvertisementDataLocalNameKey i CBAdvertisementDataServiceUUIDsKey.

Te klawisze mają zastosowanie tylko wtedy, gdy urządzenie iOS znajduje się w trybie centralnym i wykrywa zewnętrzne urządzenia peryferyjne (tzn. Tylko do odczytu). Nie mam pojęcia, dlaczego to ograniczenie obowiązuje w trybie peryferyjnym, możesz spróbować zgłosić na nim raport o błędzie.

+1

Są one na swoim miejscu w trybie urządzeń peryferyjnych, ponieważ urządzenie to iPhone firmy Apple, a nie to, czego żąda aplikacja. Więc wszystko, co produkuje producent, to dane firmy Apple, a wszystkie urządzenia to iPhone. To, co możesz zmienić, to nazwa urządzenia, a Ty określasz usługi oferowane przez aplikację (które iOS może następnie łączyć z usługami oferowanymi przez inne aplikacje). –

+0

OK, ma sens. Dzięki za wytłumaczenie! – russbishop

+0

@russbishop Hej Możesz spojrzeć na moje pytanie? Potrzebuję twojej pomocy. https://stackoverflow.com/questions/46402904/is-there-any-way-access-manufacturer-data-from-ios-device – sorunluadam

Powiązane problemy