A simple Swift framework for building reliable Bluetooth LE apps with a FIFO queue and background restoration.
Bluejay is a Swift framework designed to simplify the development of Bluetooth Low Energy (BLE) applications for iOS. It abstracts the complexities of Apple's CoreBluetooth API, providing a more intuitive, callback-based interface with built-in operation queuing, background restoration, and data serialization. It solves the problem of building reliable BLE apps that need to handle connections, data transfer, and state management consistently.
iOS developers building apps that communicate with Bluetooth LE peripherals, such as health sensors, IoT devices, or custom hardware. It's particularly useful for developers who need reliable connection handling, background operation support, and clean data serialization.
Developers choose Bluejay because it reduces the boilerplate and complexity of CoreBluetooth, offering a streamlined API with features like a FIFO operation queue for predictable behavior, background restoration support, and simple data serialization protocols. Its focus on reliability and Swift-native design makes it easier to build robust BLE apps compared to using CoreBluetooth directly.
A simple Swift framework for building reliable Bluetooth LE apps.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Ensures synchronous and predictable Bluetooth operation execution, reducing race conditions and debugging headaches as highlighted in the features list.
Simplifies handling app state restoration for Bluetooth operations when backgrounded, a complex CoreBluetooth feature that Bluejay automates with configurable restorers.
Uses Sendable and Receivable protocols for easy conversion between Swift models and Bluetooth data packets, with built-in helpers like combine and extract for Data.
Provides easy and safe observers for monitoring Bluetooth availability and connection states, with weak references to avoid memory leaks, as detailed in the Bluetooth Events section.
Only supports communication with one BLE peripheral at a time, as the README admits, making it unsuitable for apps managing multiple devices simultaneously.
Scans with allowDuplicates or without specific service identifiers fail in the background, limiting real-time monitoring use cases and requiring workarounds.
Background restoration and Carthage installation involve multiple steps and external dependencies like XCGLogger, adding to initial configuration complexity.