我遵循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)
通常,会话应创建一次并作为类的实例变量保存。