Ответ 1
В Core Bluetooth вам необходимо использовать характеристики для связи. Нет стандартного API, основанного на потоках, как в структуре внешнего аксессуара, и я не знаю ни одной библиотеки с открытым исходным кодом, которая реализует что-то вроде этого.
Основная операция
Периферийное → Центральное:
- Central подписывается на характеристику (либо с уведомлениями или указаниями)
- Периферийное устройство получает подписанный обратный вызов, поэтому знает, что центральное устройство прослушивает
- Характеристики обновления периферийных устройств
- Центральное получает характерное обновленное уведомление
Центральное → Периферийное устройство:
- Центральная запись характерна
- Периферийное устройство получает обновление запроса на запись
Фактическая скорость, которую вы можете достичь, зависит от различных факторов. По показаниям данные никогда не теряются (например, TCP), но уведомления не имеют таких гарантий (например, UDP).
Дополнительная информация
Я предлагаю вам ознакомиться с официальным руководством по программированию ядра Bluetooth и сконцентрироваться на
секции. Но лучше было бы изучить весь проводник, как есть. В качестве примера можно привести пример BTLE Transfer от Apple.