An extensible Swift framework providing over 60 monitor classes to handle system events and notifications across Apple platforms.
XestiMonitors is an extensible monitoring framework written in Swift for Apple platforms. It provides over 60 pre-built monitor classes that wrap system notifications and frameworks like Core Location, Core Motion, Foundation, and UIKit, allowing developers to handle events with less boilerplate code. It solves the problem of repetitive and error-prone notification management by offering a unified, type-safe API.
iOS, macOS, tvOS, and watchOS developers who need to respond to system events, device state changes, or user interactions in their apps. It's particularly useful for those building apps that rely on location, motion, accessibility, or UI-related notifications.
Developers choose XestiMonitors because it drastically reduces boilerplate code for notification handling, provides a consistent and extensible API, and includes a wide range of pre-built monitors for common use cases. Its unified protocol allows for easy management of multiple monitors, improving code maintainability.
An extensible monitoring framework written in Swift
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Offers over 60 ready-to-use monitor classes for Core Location, Core Motion, Foundation, and UIKit, drastically reducing boilerplate code for common system events like keyboard visibility changes.
All monitors conform to a single Monitor protocol, enabling easy management of multiple monitors with arrays for uniform starting and stopping, as shown in the usage example.
Supports iOS, macOS, tvOS, and watchOS with the same API, making it ideal for developers building apps across Apple's ecosystem without platform-specific code.
Provides a clean, callback-driven API with type-safe events, improving code safety and readability compared to raw NotificationCenter usage, exemplified in the keyboard monitor comparison.
Adds an external framework dependency that might be unnecessary for simple apps or those with minimal monitoring needs, increasing project complexity and binary size.
The README admits additional monitors will be rolled out in future releases, meaning some system events might not be covered out of the box, requiring custom implementation.
Creating custom monitors involves implementing protocols or subclassing base classes like BaseMonitor, which can be more complex than direct notification handling for unique cases.