Swift Multipeer Connectivity, отмена приглашения с помощью обработчика приглашений

Я следовал этому руководству для реализации многорангового подключения. В новой быстрой версии делегатом по умолчанию для рекламодателя является

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()) Но это привело к вылету.

Что я должен передать в сеансе, чтобы отменить приглашение вместо нуля?


person Francis F    schedule 03.12.2015    source источник


Ответы (1)


Поскольку второй параметр обработчика приглашений не является необязательным, вы должны передать действительный сеанс.

При создании сеанса вы всегда должны передавать действительный идентификатор MCPeerID. Например:

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

Обычно сеанс должен быть создан один раз и храниться как переменная экземпляра вашего класса.

person Keith Coughtrey    schedule 03.12.2015