Latest 0.5.4
Homepage https://github.com/rchatham/PeerConnectivity
License MIT
Platforms ios 8.0
Frameworks MultipeerConnectivity
Authors

PeerConnectivity

[Platform: iOS 8+]()
Language: Swift 3
Carthage compatible
Cocoapods compatible
Docs
[License: MIT]()

A functional wrapper for the MultipeerConnectivity framework.

PeerConnectivity is meant to have a lightweight easy to use syntax, be extensible and flexible, and handle the heavy lifting and edge cases of the MultipeerConnectivity framework quietly in the background.

Please open an issue or submit a pull request if you have any suggestions!
Check out the Playground!

Blog post https://goo.gl/HJcMbE

Read the docs!

Installation

Cocoapods

The easiest way to get started is to use CocoaPods. Just add the following line to your Podfile:

pod 'PeerConnectivity', '~> 0.5.3'

Carthage

github "rchatham/PeerConnectivity"

Creating/Stopping/Starting

var pcm = PeerConnectionManager(serviceType: "local")

// Start
pcm.start()

// Stop
//  - You should always stop the connection manager 
//    before attempting to create a new one
pcm.stop()

// Can join chatrooms using PeerConnectionType.Automatic, .InviteOnly, and .Custom
//  - .Automatic : automatically searches and joins other devices with the same service type
//  - .InviteOnly : provides a browserViewController and invite alert controllers
//  - .Custom : no default behavior is implemented

// The manager can be initialized with a contructed peer representing the local user
// with a custom displayName

pcm = PeerConnectionManager(serviceType: "local", connectionType: .Automatic, displayName: "I_AM_KING")

// Start again at any time
pcm.start() {
    // Do something when finished starting the session
}

Sending Events to Peers

let event: [String: Any] = [
    "EventKey" : Date()
]

// Sends to all connected peers
pcm.sendEvent(event)

// Use this to access the connectedPeers
let connectedPeers: [Peer] = pcm.connectedPeers

// Events can be sent to specific peers
if let somePeerThatIAmConnectedTo = connectedPeers.first {
   pcm.sendEvent(event, toPeers: [somePeerThatIAmConnectedTo])
}

Listening for Events

// Listen to an event
pcm.observeEventListenerForKey("someEvent") { (eventInfo, peer) in

    print("Received some event (eventInfo) from (peer.displayName)")
    guard let date = eventInfo["eventKey"] as? Date else { return }
    print(date)

}

// Stop listening to an event
pcm.removeListenerForKey("SomeEvent")

Acknowledgments

Icon from the Noun Project.

Latest podspec

{
    "name": "PeerConnectivity",
    "version": "0.5.4",
    "summary": "Functional wrapper for Apple's MultipeerConnectivity framework.",
    "description": "A functional wrapper around the MultipeerConnectivity framework that handles the edge cases ofnmesh-networks.",
    "homepage": "https://github.com/rchatham/PeerConnectivity",
    "license": "MIT",
    "authors": {
        "Reid Chatham": "[email protected]"
    },
    "platforms": {
        "ios": "8.0"
    },
    "source": {
        "git": "https://github.com/rchatham/PeerConnectivity.git",
        "tag": "0.5.4"
    },
    "source_files": "Sources/*",
    "frameworks": "MultipeerConnectivity",
    "pushed_with_swift_version": "3.0"
}

Pin It on Pinterest

Share This