Полный текст

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