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 的实例变量保存。
我已按照 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 的实例变量保存。