MultiPeer 0.2.0

MultiPeer 0.2.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2020年9月
SPM支持 SPM

Wilson Ding 维护。



MultiPeer 0.2.0

  • Wilson Ding

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

Apple's MultipeerConnectivity 框架的包装,用于在 Apple 设备之间进行离线数据传输。此框架使自动连接到多个附近的设备并使用蓝牙或 Wi-Fi 无线电共享信息变得很容易。

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

特性

  • 支持 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。有两种连接模式(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是在MIT 许可协议下发布的。有关详细信息,请参阅LICENSE

作者

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