Недавно я начал использовать метод EAAccessoryManager
showBluetoothAccessoryPickerWithNameFilter
для подключения к Bluetooth-аксессуару MFI (если он еще не подключен) при запуске нашего приложения. Я столкнулся со следующим сценарием:
- Аксессуар выключен
- Пользователь запускает приложение
- Отображается окно выбора аксессуаров
- Пользователь включает аксессуар (который ранее был сопряжен и, таким образом, повторно подключается)
- Средство выбора аксессуаров продолжает отображаться, и приложение не получает
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!