Ответ 1

Joels есть очень четкий способ использования Bluetooth classic на iOS. Это с картой внешнего аксессуара (в нее также входят прямые аппаратные соединения в дополнение к Bluetooth classic).

Вам нужно добавить ExternalAccessory.framework и указать "App communicates with an accessory" в требуемых фоновых режимах внутри вашего plist, чтобы начать. Следует отметить, однако, что с Bluetooth classic пользователь должен добавить ваше устройство Bluetooth из настроек системы Bluetooth. Только с Bluetooth LE мы можем добавлять устройства со стороны приложения.

Ознакомьтесь с документами на Внешней структуре аксессуаров

В ответ на ваш вопрос относительно программы MFi это должно уточнить:

Я хочу разработать приложение iOS, которое связывается с аксессуаром MFi. Нужно ли мне присоединиться к программе MFi?     Нет. Разработчикам приложений iOS не нужно вступать в Программу MFi. Все, что нужно разработчикам приложений, - это внешняя инфраструктура, который предоставляется в SDK iOS. Чтобы получить доступ к SDK iOS, присоединитесь iOS Developer Program: https://developer.apple.com/programs/ios/.

Если вы хотите узнать больше, обратитесь к Часто задаваемые вопросы по MFi

Ответ 2

Если вашему внешнему аксессуару не требуется высокая пропускная способность при подключении к iOS, и вы хотите использовать (или должны использовать) 2.x/classic BT (вместо 4.x/LE/Smart, что очень низкая пропускная способность, но не требует танцев MFi), вы можете общаться, эмулируя клавиатуру BT HID в вашем аксессуаре.

Это вряд ли оптимально, тем более что обратный канал HID довольно ограничен (я думаю, что такие вещи, как подсветка ключа блокировки колпачков в базовой конфигурации клавиатуры (отображение HID page 7, если я правильно помню). OTOH, если ваша основная задача заключается в том, чтобы передавать данные на устройство iOS, отправляя данные, поскольку нажатия клавиш не были бы слишком ужасными (и могут даже рассматриваться как добродетель во время тестирования:)

HID-устройства могут объявлять дополнительные возможности в табличных таблицах, но я не уверен, может ли приложение iOS получить эти альтернативные сопоставления с санкционированными API-интерфейсами.