Skip to content

space-code/nexus

Repository files navigation

Nexus: AW and iPhone Communication Service

nexus

License Platform Swift5.7 CI CodeCov

Description

Nexus is a wrapper around WatchConnectivity that simplifies the interaction between watchOS and iOS.

Usage

  1. Define a message model like this:
import Nexus

struct TestMessage: Message {
  static let identifier: String {
    return "TestModel"
  }
}
  1. Create an instance of the CommunicationService and subscribe to receive messages:
import Nexus

var disposables = Set<AnyCancellable>()
let communicationService = CommunicationService()
communicationService.receiveMessage(TestMessage.self)
  .sink(receiveCompletion: { result in 
    if case let .failure(error) = result {
      // something went wrong
    }, receiveValue: { message in 
      debugPrint(message)
    }
  })
  .store(in: &disposables)
  1. Send a message to Apple Watch or iPhone:
import Nexus

let message = TestMessage()
communicationService.sendMessage(message)

Requirements

  • iOS 13.0+ / watchOS 7.0+
  • Xcode 14.0
  • Swift 5.7

Installation

Swift Package Manager

The Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the swift compiler. It is in early development, but nexus does support its use on supported platforms.

Once you have your Swift package set up, adding nexus as a dependency is as easy as adding it to the dependencies value of your Package.swift.

dependencies: [
    .package(url: "https://github.com/space-code/nexus.git", .upToNextMajor(from: "2.0.0"))
]

Communication

  • If you found a bug, open an issue.
  • If you have a feature request, open an issue.
  • If you want to contribute, submit a pull request.

Contributing

Bootstrapping development environment

make bootstrap

Please feel free to help out with this project! If you see something that could be made better or want a new feature, open up an issue or send a Pull Request!

Author

Nikita Vasilev, [email protected]

License

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