多点连接 手动连接/管理点
Posted
技术标签:
【中文标题】多点连接 手动连接/管理点【英文标题】:Multipeer Connectivity Connecting / Managing Peers Manually 【发布时间】:2014-12-02 14:35:12 【问题描述】:我试图弄清楚手动连接到对等点的 NSData 对象是什么。我在苹果文档中找不到它,它只是说它需要来自对等方的连接数据对象,但我找不到从哪里得到它。这是Apple Doc
我想用这个
func connectPeer(_ peerID: MCPeerID!, withNearbyConnectionData data: NSData!)
当对等方断开连接时,我正在使用此方法。出于某种原因,当对等方断开连接时,我仍然可以从中发送和接收信息,因此我想使用此方法强制重新连接。
感谢您的帮助
【问题讨论】:
有什么理由要这样做,而不是使用更高级别的MCNearbyServiceBrowser
和 MCNearbyServiceAdvertiser
类?
我能看到的所有强制连接都是使用浏览器重新邀请他们加入会话。尽管我仍然可以发送和接收消息,但我遇到了连接断开的大问题。
您能否发布您当前正在断开连接的代码? MPC 有几个已知问题,您可能只是遇到其中之一。
@ChrisH 这并不是真正的特定代码,我在这种情况下会丢失连接。有时一个设备可能无法找到它周围的所有其他设备。这样,如果我得到了 func connectPeer(_ peerID: MCPeerID!, withNearbyConnectionData data: NSData!)
的数据需要的答案,我可以解决其中的一些问题。
有道理。我添加了一个可能的答案
【参考方案1】:
您正在寻找的NSData
对象是该函数完成块的一部分:
func nearbyConnectionDataForPeer(_ peerID: MCPeerID!,
withCompletionHandler completionHandler: ((NSData!,
NSError!) -> Void)!)
文档中并不清楚,但我怀疑您自己的发现代码会在初始连接阶段将您本地创建的MCPeerID
对象传递给其他发现的设备。然后你会在上面的函数中使用发现的对等点的MCPeerID
对象,最后用你得到的数据调用connectPeer
函数。
我很想听听你是否能做到这一点!
【讨论】:
【参考方案2】:如果您真的想了解传递给对等方以建立连接的数据,我建议您应该阅读以下文档: truth about multipeer connectivity framework
【讨论】:
以上是关于多点连接 手动连接/管理点的主要内容,如果未能解决你的问题,请参考以下文章