Bonjour 是一个用于与支持 bonjour 协议
的设备进行轻松通信的小型服务。
5.2
11.0
10.13
.package(url: "https://github.com/eugenebokhan/Bonjour.git",
.upToNextMinor(from: "2.1.0"))
初始化会话
let bonjour = BonjourSession(configuration: .default)
启动/停止会话
// Start broadcasting
bonjour.start()
// Stop broadcasting
bonjour.stop()
实现可选的处理程序
// On start receiving large package of data.
bonjour.onStartRecieving = { resourceName, peer in ... }
// Track large package of data receiving progress.
bonjour.onReceiving = { resourceName, progress in ... }
// On finish receiving large package of data.
bonjour.onFinishRecieving = { resourceName, peer, localURL, error in ... }
// On small package of data receive.
bonjour.onReceive = { data, peer in ... }
// On new peer discovery.
bonjour.onPeerDiscovery = { peer in ... }
// On loss of peer.
bonjour.onPeerLoss = { peer in ... }
// On connection to peer.
bonjour.onPeerConnection = { peer in ... }
// On disconnection from peer.
bonjour.onPeerDisconnection = { peer in ... }
// On update of list of available peers.
bonjour.onAvailablePeersDidChange = { availablePeers in ... }
发送消息/数据
// Send small package of data to all connected peers.
bonjour.broadcast(_ data: Data)
// Send small package of data to certain amount of connected peers.
bonjour.send(_ data: Data, to peers: [Peer])
// Send large package of data to a certain peer.
bonjour.sendResource(at url: URL,
resourceName: String,
to peer: Peer,
progressHandler: ((Double) -> Void)?,
completionHandler: ((Error?) -> Void)?)
为了使 BonjourSession
在 iOS 14 上运行时正常工作,您需要在应用程序的 Info.plist 文件中包含两个键。
这两个键是 Privacy - Local Network Usage Description
(NSLocalNetworkUsageDescription
) 和 Bonjour services
(NSBonjourServices
)。
对于隐私键,请包含一段人类可读的描述,说明用户允许您的应用访问本地网络上的设备能获得什么好处。
Bonjour services 键是一个您的应用将浏览的服务类型数组。对于 BonjourSession
,条目应采用 _servicename._tcp
格式,其中 servicename
是您在 MultipeerConfiguration
中设置的 serviceType
。如果您使用的是默认配置,则此键的值应为 _Bonjour._tcp
。
如果您未正确配置上述键,则 BonjourSession
将无法工作。
该项目的许可为 MIT。