2016-08-19 11 views
14

Nie mogłem uzyskać tych dwóch powiadomień EAAccessoryDidConnectNotification i EAAccessoryDidDisconnectNotification po podłączeniu Lightning kBD lub Smart KBD z moją aplikacją. Ale to działało na iOS9.3 z mojego kodu jak poniżej,Brak EAAccessoryDidConnectNotification i EAAccessoryDidDisconnectNotification po podłączeniu Lightning kBD lub Smart KBD

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_accessoryDidConnect:) name:EAAccessoryDidConnectNotification object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_accessoryDidDisconnect:) name:EAAccessoryDidDisconnectNotification object:nil]; 
[[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications]; 

Jaka jest przyczyna?

P.S .: Mam następujący komunikat w dziennikach. nie można odnaleźć "com.apple.private.externalaccessory.showallaccessories" uprawnienie

+0

Niedawno potknąłem się o tym samym zachowaniu z tym samym logiem, czy mógłbyś znaleźć przyczynę? – AnderCover

+0

Ten sam problem tutaj, w tym komunikat "com.apple.private.externalaccessory.showallaccessories". Jakieś światło rzucające na ten problem? – cshavit

+0

Jakieś rozwiązanie do tej pory? –

Odpowiedz

0

Usunąłem "iOS zespołu zaopatrzenie profil: *" w Xcode-> Preferencje-> Konta -> -> zobacz szczegóły.

Po usunięciu profilu zostanie pobrana nowa kopia. Od tego czasu nie widzę tego "Nie można znaleźć uprawnienia com.apple.private.externalaccessory.showallaccessories". Zgaduję, że to uprawnienie znajduje się teraz w "profilu udostępniania dla zespołu iOS: *". Jeśli identyfikator pakunku jest obecny w innym "profilu zaopatrzeniowym dla zespołu iOS", to zalecamy usunięcie tego profilu obsługi również.

+0

Teraz, gdy nie otrzymujesz komunikatu o błędzie, czy jesteś w stanie wyliczyć sparowane urządzenia BT przez '[[EAAccessoryManager sharedAccessoryManager] connectedAccessories]'? Jeśli tak, jakie usługi/możliwości są włączone w Twojej aplikacji? Dzięki! – cshavit

+0

Nie miałem żadnego problemu nawet z komunikatem o błędzie i tak, używam sharedAccessoryManager connectedAccessories. Wszystkie funkcje są wyłączone. Moje akcesoria to klasyczny skaner kodów kreskowych Bluetooth. – EricG

0

Wygląda na to, że problem jest dobrze znany w wersjach iOS 10 (beta), ponieważ nie mamy dostępnego stabilnego wydania. Wydaje się, że został rozwiązany w stabilnej wersji systemu iOS 10. Jest on również podniesiony na Apple Developer Forum, ale nie konkretne rozwiązanie.

Chociaż próbowałem kilka różnych rzeczy, aby rozwiązać ten problem, ale skończyło się robi to, co działało:

  1. Clean
  2. czystą kompilację Folder
  3. Usuń i ponowne połączenie ExternalAccessory.framework
  4. Usuń aplikację na urządzenia z iOS
  5. zbudować i uruchomić

Jeśli to nie pomoże, spróbuj usunąć i wygenerować nowy profil informacyjny dla aplikacji.

-3

Możesz spróbować usunąć i wygenerować nowy profil informacyjny dla swojej aplikacji.

W systemie iOS 10 Apple ma dwa nowe wymagania, aby aplikacja mogła odbierać powiadomienia EAAccessoryDidConnectNotification i EAAccessoryDidDisconnectNotification, a także wyświetlać listę urządzeń za pomocą [[EAAccessoryManager sharedAccessoryManager] connectedAccessories].

Include a protocolString of the external accessory in your app's UISupportedExternalAccessoryProtocols property list. 

Have the external accessory's manufacturer submit to Apple a request for MFi whitelisting of your app. 

Do debugowania potrzebne jest tylko (1). Ale Twoja aplikacja nie zostanie zatwierdzona przez Apple (prawdopodobnie nawet dla TestFlight) bez (2).

+1

Proszę nie kopiować odpowiedzi innego użytkownika na twoje, bez poprawnego odniesienia do treści; zobacz http://stackoverflow.com/help/referencing. Jednak w tym przypadku nie jestem pewien, dlaczego w ogóle skopiowałeś treść *, ponieważ twoja odpowiedź jest niezależna od niej, więc zredagowałem skopiowaną treść. – Matt

-3

W iOS 10 Apple ma dwa nowe wymagania, aby Twoja aplikacja mogła otrzymywać powiadomienia o numerach EAAccessoryDidConnectNotification i EAAccessoryDidDisconnectNotification, a także wyświetlała listę urządzeń za pośrednictwem [[EAAccessoryManager sharedAccessoryManager] connectedAccessories].

  1. Dołącz protocolString akcesorium zewnętrznego w liście UISupportedExternalAccessoryProtocols własności swojej aplikacji.

  2. Poproś producenta akcesoriów zewnętrznych o przesłanie Apple prośby o dodanie białej listy do aplikacji MFi.

Do debugowania potrzebne jest tylko (1). Ale Twoja aplikacja nie zostanie zatwierdzona przez Apple (prawdopodobnie nawet dla TestFlight) bez (2).

+0

Dzięki. Wszelka dokumentacja na ten temat? Gdzie o tym słyszałeś? – Mike

+0

Mike, od https://developer.apple.com/library/content/featuredarticles/ExternalAccessoryPT/Introduction/Introduction.html plus rozmowa z producentem akcesoriów. – cshavit

+1

Naprawdę dziwna ta odpowiedź została przyjęta, czy rozwiązuje coś dla kogoś? Dla mnie te wymagania nie są nowe, a posiadanie ich nie zapobiegło wystąpieniu błędu. Założę się, że na bug jabłkowy i ptaszek powiedział mi, że mam nadzieję i czekać na następny iOS 10 niewielkie wydanie – AnderCover

0

Oto moje doświadczenie. Na Xcode 8.1 mogę z powodzeniem zbudować stary projekt Apple oparty na technologii NIB (EADemo) i uruchomić go na urządzeniu z systemem iOS 10.1.1. Działa dobrze z moim akcesorium Bluetooth. Następnie zmieniłem nazwę folderu projektu i zakończyłem przenoszenie do projektu opartego na Storyboard. Uruchamianie aplikacji na tym samym iPhone'ie powoduje awarię sesji EA i pojawia się dziennik błędów:

2016-11-29 17: 04: 00.804421 K5Demo [430: 69578] Nie można znaleźć "com.apple.private" .externalaccessory.showallaccessories”nadanie 29.11.2016 17: 04: 04,736780 K5Demo [430: 69578] Błąd - otwarcie nie powiodła się protokół (null) nie zostały zgłoszone info.plist

w dwóch przypadkach Plik Info.plist jest taki sam, a także wersja iOS.

Powiązane problemy