MMWormhole 1.2.0

WatchKit apps have been out in the wild for several weeks now and I'm excited to release the first major update to MMWormhole since the launch of the Apple Watch. MMWormhole has been a big part of building many apps for the Apple Watch. This 1.2.0 version should help the library mature alongside the practice of developing for the Apple Watch.

Most of the changes included in this version represent bug fixes and improvements from many community contributors. Chief among them were several fixes to issues resulting in multiple message notifications being sent to listeners for single messages. There is also a great troubleshooting feature to alert users of issues with their App Group configuration. Check out the release notes above for a full run down of what's new.

This release is also geared towards keeping MMWormhole current with the latest developments from Apple. There are improvements to using MMWormhole with Swift involving the nullability flags introduced in the latest updates to the Swift programming language. There are also improvements to support NSFileCoordinator which was fixed in iOS 8.2 to support coordinated file access between apps and extensions. Special thanks to Tom Harrington for pointing this out on his blog.

In order to support coordinated file access, the underlying architecture for MMWormhole was refactored to support a message passing protocol called MMWormholeTransiting. This protocol defines the means by which messages "transit" from one side of the wormhole to the other. The default implementations include straight up file access or optional coordinated file access. Additional subclasses could be created by the community to support features like NSUserDefaults message persistence, or queued message delivery.

I'm glad this mechanism now exists because it makes MMWormhole more extensible without adding any new complexity to the simple interface that has been so key to the library's approachability and ease of use. It also makes the library more future proof. If Apple ever implements a first party system for passing messages between apps and extensions, MMWormhole could likely support that system through a new implementation of the transiting protocol.

The community of people using MMWormhole has been incredibly supportive. If you have any feedback or thoughts and suggestions on ways the library can improve, or simply want to share how you're using it, feel free to share an issue, pull request, or blog post. If you'll be out at WWDC this year and want to chat about MMWormhole, come find me or one of the other engineers from Mutual Mobile