Build Status CocoaPods Version Status Carthage compatible doccov iOS MacOS tvOS Swift MIT License

用于Apple设备的MultipeerConnectivity框架的封装器,用于Apple设备之间的离线数据传输。该框架可以轻松地自动连接到多个附近的设备,并使用蓝牙或wifi无线电共享信息。

  1. 特性
  2. 集成
  3. 用法
  4. 示例
  5. 许可证
  6. 作者

特性

集成

CocoaPods

您可以使用 CocoaPods 安装 MultiPeer,只需将其添加到您的 Podfile

pod 'MultiPeer'

Carthage

您可以使用 Carthage 安装 MultiPeer,只需将其添加到您的 Cartfile

github "dingwilson/MultiPeer"

Swift Package Manager

对于 SPM,请将以下内容添加到您的程序包依赖项中

.package(url: "https://github.com/dingwilson/MultiPeer.git", .upToNextMinor(from: "0.0.0"))

用法

首先,导入 MultiPeer。

import MultiPeer

然后,只需使用会话名称 (serviceType) 初始化 MultiPeer。有两种连接模式(advertiserbrowser)。要同时使用这两种模式,只需使用 .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_Sample

许可证

MultiPeerMIT 许可证下发布。 有关详细信息,请参阅 LICENSE

作者

该项目深受 Apple-Signal 的启发。