Apple's MultipeerConnectivity 框架的包装,用于在 Apple 设备之间进行离线数据传输。此框架使自动连接到多个附近的设备并使用蓝牙或 Wi-Fi 无线电共享信息变得很容易。
特性
- 支持 iOS/macOS/tvOS
- 自动连接
- 自动邀请/广告
- 通过 MultipeerConnectivity 框架发送/接收数据
- 指定数据类型以方便处理
集成
CocoaPods
您可以通过添加到您的 Podfile
中使用 CocoaPods 来安装 MultiPeer
pod 'MultiPeer'
Carthage
您可以通过添加到您的 Cartfile
中使用 Carthage 来安装 MultiPeer
github "dingwilson/MultiPeer"
Swift 包管理器
对于SPM,请在您的包依赖中添加以下内容
.package(url: "https://github.com/dingwilson/MultiPeer.git", .upToNextMinor(from: "0.0.0"))
用法
要开始,导入 MultiPeer。
import MultiPeer
然后,简单地使用您的会话名称(serviceType
)来初始化 MultiPeer。有两种连接模式(advertiser
和browser
)。要利用两者,请使用.autoConnect()
。
MultiPeer.instance.initialize(serviceType: "demo-app")
MultiPeer.instance.autoConnect()
通过 MultiPeer 传输的任何数据都始终伴随着一个数字“类型”,以确保其他对等体知道正在接收什么类型的数据以及如何正确处理它。您可以通过创建一个下面的代码示例中的UInt32
枚举来管理此操作
enum DataType: UInt32 {
case string = 1
case image = 2
// ...
}
要发送数据,请简单地使用.send(object: type:)
函数
MultiPeer.instance.send(object: "Hello World!", type: DataType.string.rawValue)
要接收数据,我们必须遵守MultiPeerDelegate
协议
func multiPeer(didReceiveData data: Data, ofType type: UInt32, from peerID: MCPeerID) {
switch type {
case DataType.string.rawValue:
let string = data.convert() as! String
// do something with the received string
break
case DataType.image.rawValue:
let image = UIImage(data: data)
// do something with the received UIImage
break
default:
break
}
}
func multiPeer(connectedDevicesChanged devices: [String]) {
}
确保您已设置 MultiPeer 代理。
MultiPeer.instance.delegate = self
最后,您需要在您的权限中启用传入/传出连接。
恭喜!您已成功使用 MultiPeer 发送数据!有关更详细的信息(包括其他函数的详细信息),请参阅文档。
示例
有关使用 MultiPeer 的示例应用程序,请参阅
许可协议
MultiPeer
是在MIT 许可协议下发布的。有关详细信息,请参阅LICENSE。
作者
该项目深受Apple-Signal项目的启发。