Swift Concurrency и CoreBluetooth: как построить современный BLE-сервис

На случай проблем с сетью в Ситидрайве есть оффлайн-сценарий — управление дверьми машины через Bluetooth. Недавно мы с командой обновили этот механизм и значительно улучшили интеграцию различных модулей телеметрии.
Я взял на себя часть по iOS и попробовал применить новый Swift Concurrency поверх старого CoreBluetooth. В этой статье расскажу, какие подводные камни вылезли при совмещении structured concurrency и callback-ориентированного API, как их обойти и на что стоит обратить внимание, если вы тоже решите «прикрутить» современные async/await к старому API.


















