我关注了this tutorial用于实现多点连接。 在新的 swift 版本中,广告商的默认委托(delegate)是
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())
但这导致了崩溃。
我应该在 session 中传递什么来取消邀请而不是nil?
最佳答案
由于invitationHandler的第二个参数不是可选的,因此您必须传入有效的 session 。
创建 session 时,您必须始终传入有效的 MCPeerID。例如:
var session: MCSession?
...
session = MCSession(peer: thisPeer)
通常, session 应该创建一次并作为类的实例变量保存。
关于ios - 快速多点连接,使用邀请处理程序取消邀请,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34060173/