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

swift Mulitpeer Connectivity, canceling invitation using invitation handler

我已按照 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?

由于invitationHandler的第二个参数不是可选的,所以必须传入一个有效的session。

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

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

通常情况下,会话应该创建一次并作为 class 的实例变量保存。