EAAccessoryDidConnectNotification не срабатывает до тех пор, пока не будет вызван блок завершения средства выбора аксессуаров Bluetooth

Недавно я начал использовать метод EAAccessoryManager showBluetoothAccessoryPickerWithNameFilter для подключения к Bluetooth-аксессуару MFI (если он еще не подключен) при запуске нашего приложения. Я столкнулся со следующим сценарием:

  1. Аксессуар выключен
  2. Пользователь запускает приложение
  3. Отображается окно выбора аксессуаров
  4. Пользователь включает аксессуар (который ранее был сопряжен и, таким образом, повторно подключается)
  5. Средство выбора аксессуаров продолжает отображаться, и приложение не получает EAAccessoryDidConnectNotification, пока пользователь не закроет средство выбора аксессуаров, нажав «Отмена».

В ситуации, описанной выше, даже несмотря на то, что мы подключены к аксессуару, определенному нашим NSPredicate, сборщик зависает, и мы не получаем уведомления о подключении аксессуара до тех пор, пока не будет вызван блок завершения сборщика. Пользователь как бы застрял в подвешенном состоянии.

Мы используем iOS 7.1.1 и тестировали 7.1 и 7.0.

Любая помощь будет оценена по достоинству. Вот несколько журналов, показывающих, что я вижу:

2014-04-28 12:03:48.028 App[508:60b] BTM: attaching to BTServer
2014-04-28 12:03:48.262 App[508:60b] BTM: setting pairing enabled
2014-04-28 12:03:55.578 App[508:60b] BTM: attempting to connect to service 0x00000001 on device "Accessory-10" 00:07:80:79:92:8D
2014-04-28 12:03:55.966 App[508:60b] BTM: connection to service 0x00000001 on device "Accessory-10" 00:07:80:79:92:8D succeeded
2014-04-28 12:03:55.991 App[508:60b] BTM: attempting to connect to service 0x00000080 on device "Accessory-10" 00:07:80:79:92:8D
2014-04-28 12:03:56.024 App[508:60b] BTM: connection to service 0x00000080 on device "Accessory-10" 00:07:80:79:92:8D succeeded
2014-04-28 12:04:06.845 App[508:60b] BTM: setting pairing disabled
2014-04-28 12:04:06.847 App[508:60b] BTM: disabling device scanning
2014-04-28 12:04:06.856 App[508:60b] __46-[LoginViewController        selectBluetoothDevice]_block_invoke Error: Error Domain=EABluetoothAccessoryPickerErrorDomain Code=2 "The operation couldn’t be completed. (EABluetoothAccessoryPickerErrorDomain error 2.)"
2014-04-28 12:04:06.928 App[508:60b] EAAccessoryDidConnectNotification
2014-04-28 12:04:06.935 App[508:60b] Accessory connected!

person Ben Graver    schedule 28.04.2014    source источник
comment
Документ, кажется, говорит, что это синхронно, это может заморозить приложение. Проверьте, не можете ли вы поместить своего слушателя в другую ветку чего-то подобного.   -  person Larme    schedule 29.04.2014
comment
Здравствуйте @Ben Grave, у меня есть одно сомнение, ваш Accessory-10 сертифицирован MFI или нет?   -  person Hari c    schedule 18.07.2017
comment
@Haric, можем ли мы использовать для разработки аксессуар, не сертифицированный MFI? Сертификацию можно пройти при перемещении производства.   -  person Ragul    schedule 28.12.2020