swift Multipeer Connectivity,使用邀请处理程序取消邀请

Posted

技术标签:

【中文标题】swift Multipeer Connectivity,使用邀请处理程序取消邀请【英文标题】:swift Mulitpeer Connectivity, canceling invitation using invitation handler 【发布时间】:2015-12-03 07:31:54 【问题描述】:

我已关注 this tutorial 以实现多点连接。 在新的 swift 版本中,广告商的默认委托是

func advertiser(advertiser: MCNearbyServiceAdvertiser, didReceiveInvitationFromPeer peerID: MCPeerID, withContext context: NSData?, invitationHandler: ((Bool, MCSession) -> Void))


    self.invitationHandler = invitationHandler

    delegate?.invitationWasReceived(peerID.displayName)

之前的类型是invitationHandler : ((Bool, MCSession!)->Void)!

根据当前示例,当用户拒绝邀请时,呼叫采用这种格式self.appDelegate.mpcManager.invitationHandler(false, nil)

但在新版本中它不接受nil 我已经尝试过self.appDelegate.mpcManager.invitationHandler(false, MCSession()) 但这导致了崩溃。

我应该在会话中传递什么来取消邀请而不是 nil?

【问题讨论】:

【参考方案1】:

由于invitationHandler的第二个参数不是可选的,你必须传入一个有效的会话。

创建会话时,您必须始终传入有效的 MCPeerID。例如:

var session: MCSession?
...
session = MCSession(peer: thisPeer)

通常会话应该创建一次并作为类的实例变量保存。

【讨论】:

以上是关于swift Multipeer Connectivity,使用邀请处理程序取消邀请的主要内容,如果未能解决你的问题,请参考以下文章

如何使用swift 4查看Multipeer Connectivity框架中的MCBrowserViewController

Swift2.0 Multipeer Connectivity 无法连接

swift Multipeer Connectivity,使用邀请处理程序取消邀请

在 Swift 中通过 Multipeer Connectivity 临时同步两个 iOS 设备

如何使用 Multipeer Connectivity (Swift 3) 在会话中通过 didReceiveData() 调用 table.reloadData

使用Multipeer Connectivity(Swift 2)从发件人的目标iPhone中部分接收音频文件