All Projects → nixzhu → Wormhole

nixzhu / Wormhole

Licence: mit
A more elegant way for message passing between iOS apps and extensions.

Programming Languages

swift
15916 projects

Wormhole Banner

Wormhole

Wormhole is not just a Swift port of MMWormhole but with better API and use logic. You can remove any a listener from it separately.

Example

In WatchKit extension, passing a message:

import Wormhole

let wormhole = Wormhole(appGroupIdentifier: "group.com.nixWork.Wormhole", messageDirectoryName: "Wormhole")

wormhole.passMessage(NSNumber(bool: lightState), withIdentifier: "lightState")

In App, make a listener and listen a message:

import Wormhole

let wormhole = Wormhole(appGroupIdentifier: "group.com.nixWork.Wormhole", messageDirectoryName: "Wormhole")

lazy var lightStateListener: Wormhole.Listener = {
    let action: Wormhole.Listener.Action = { [unowned self] message in
        if let lightState = message as? NSNumber {
            self.lightStateLabel.text = lightState.boolValue ? "Light On" : "Light Off"
        }
    }

    let listener = Wormhole.Listener(name: "lightStateLabel", action: action)

    return listener
    }()
     
wormhole.bindListener(lightStateListener, forMessageWithIdentifier: "lightState")

Now easy to remove a listener:

wormhole.removeListener(lightStateListener, forMessageWithIdentifier: "lightState")

or

wormhole.removeListenerByName("lightStateLabel", forMessageWithIdentifier: "lightState")

For more information, see the demo.

另有中文介绍:再造虫洞:一次 Objective-C 到 Swift 的改写之旅

Installation

CocoaPods

CocoaPods is a dependency manager for Cocoa projects.

CocoaPods 0.36 adds supports for Swift and embedded frameworks. You can install it with the following command:

$ [sudo] gem install cocoapods

To integrate Wormhole into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

pod 'Wormhole', '~> 1.0'

Then, run the following command:

$ pod install

You should open the {Project}.xcworkspace instead of the {Project}.xcodeproj after you installed anything from CocoaPods.

For more information about how to use CocoaPods, I suggest this tutorial.

Credits

Thanks to Lex Tang design the logo banner.

License

Wormhole is available under the MIT license. See the LICENSE file for more info.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].