A message-passing library for iOS/macOS apps and extensions using shared App Groups and Darwin notifications.
MMWormhole is an iOS and macOS library that facilitates message passing between an app and its extensions, such as Today widgets or Watch apps. It solves the problem of communication where true interprocess communication isn't available by using shared App Groups and Darwin notifications to pass data or commands. Messages are archived to files, allowing persistence even when the app or extension isn't actively running.
iOS and macOS developers building apps with extensions (e.g., widgets, Watch apps) that need to share data or commands between the main app and its extensions. It's particularly useful for those using background modes or requiring real-time updates.
Developers choose MMWormhole for its simplicity, reliability, and seamless integration with Apple's ecosystem, including WatchConnectivity. It provides a straightforward API for a common pain point in extension development, with built-in support for real-time notifications and flexible message transiting options.
Message passing between iOS apps and extensions.
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 straightforward methods like passMessageObject and listenForMessageWithIdentifier, reducing boilerplate code for extension communication, as shown in the example code.
Integrates CFNotificationCenter for near-instant updates when messages are sent, improving responsiveness between app and extension, as highlighted in the overview.
Provides MMWormholeSession and transiting types for seamless watchOS 2 app communication, leveraging Apple's framework for reliability, detailed in the communication section.
Supports custom MMWormholeTransiting protocols, allowing developers to implement specialized message-passing behaviors beyond file-based storage, with built-in options like session context transiting.
Notifications may not trigger if the containing app isn't awake in the background, as admitted in the README, limiting real-time updates in non-backgrounded states.
Sending too many messages at once, especially with WatchConnectivity, can overload the pipeline, requiring careful message throttling, as warned in the documentation.
Requires correct configuration of App Groups and entitlements, which can be error-prone and needs thorough troubleshooting, as illustrated in the troubleshooting section with images.
Restricted to iOS 7.0+ and macOS 10.10+, and doesn't support other platforms like Android or Windows, limiting its use case to Apple's ecosystem only.