Swiftpack.co - insidegui/MultipeerKit as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
insidegui/MultipeerKit
MultipeerConnectivity + Codable = ❤️
.package(url: "https://github.com/insidegui/MultipeerKit.git", from: "0.4.0")

MultipeerKit

A high-level abstraction built on top of the MultipeerConnectivity framework, which allows iOS, macOS and tvOS devices to exchange data between them over Wi-Fi networks, peer-to-peer Wi-Fi, and Bluetooth.

Sample app

Check the example folder for a sample implementation.

Sample

Info.plist configuration

In order for MultipeerKit to work when running on iOS 14, you will have to include two keys in your app's Info.plist file.

The keys are Privacy - Local Network Usage Description (NSLocalNetworkUsageDescription) and Bonjour services (NSBonjourServices).

For the privacy key, include a human-readable description of what benefit the user gets by allowing your app to access devices on the local network.

The Bonjour services key is an array of service types that your app will browse for. For MultipeerKit, the entry should be in the format _servicename._tcp, where servicename is the serviceType you've set in your MultipeerConfiguration. If you're using the default configuration, the value of this key should be _MKSVC._tcp.

If you do not configure the above keys properly, then MultipeerKit won't work.

Usage

The main class in this library is MultipeerTransceiver, which does both the sending and receiving aspects of the multipeer communication.

MultipeerKit can transmit and receive anything that conforms to the Codable protocol, which makes it easy for you to define your own message types.

// Create a transceiver (make sure you store it somewhere, like a property)
let transceiver = MultipeerTransceiver()

// Start it up!
transceiver.resume()

// Configure message receivers
transceiver.receive(SomeCodableThing.self) { payload, sender in
print("Got my thing from \(sender.name)! \(payload)")
}

// Broadcast message to peers
let payload = SomeEncodableThing()
transceiver.broadcast(payload)

For more information on how to use MultipeerKit, check out the documentation.

Integrating

MultipeerKit is a Swift package, to use it in your project, add this to your Package.swift file:

let package = Package(
    ...
    dependencies: [
        .package(url: "https://github.com/insidegui/MultipeerKit.git", from: "0.4.0")
    ],
    ...
)

GitHub

link
Stars: 907
Last commit: 2 weeks ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Submit a free job ad (while I'm testing this). The analytics numbers for this website are here.

Release Notes

Version 0.4
15 weeks ago
  • Introduces new callbacks: peerConnected and peerDisconnected
  • Fixes a crash that could occur when stopping/resuming the transceiver multiple times during its lifetime (#12)
  • Adds DocC documentation

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics