我遵循this tutorial来实现Multipeer连接。
在新的快速版本中,广告客户的默认代表是

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())但这导致崩溃。

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

最佳答案

由于邀请处理程序的第二个参数不是可选的,因此您必须传递有效的会话。

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

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


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

07-27 19:09