多对等框架下,发送方如何获知接收方的邀请接受/拒绝状态?
关于多对等框架(MultiPeer Framework)邀请状态的问题解答
1. 发送方如何获知接收方对邀请执行的接受(ACCEPT)或拒绝(DECLINE)操作?
在MultiPeer Framework中,发送方要获取接收方的邀请回应,只需要实现MCSessionDelegate协议中的session:didReceiveInvitationResponse:fromPeer:context:方法即可。具体逻辑如下:
- 当接收方接受邀请时,
invitationResponse.invitationAccepted属性会返回YES,后续你还会在session:peer:didChangeState:代理方法中看到该对等方的状态变为MCSessionStateConnected,代表连接已建立。 - 当接收方拒绝邀请时,
invitationResponse.invitationAccepted会返回NO,你可以在这个方法里直接处理拒绝逻辑,比如给发送方弹出提示告知邀请被拒绝。
下面是一段示例代码供参考:
- (void)session:(MCSession *)session didReceiveInvitationResponse:(MCInvitationResponse *)invitationResponse fromPeer:(MCPeerID *)peerID context:(NSData *)context { if (invitationResponse.invitationAccepted) { NSLog(@"对等方 %@ 接受了邀请!", peerID.displayName); // 在这里处理邀请接受后的逻辑 } else { NSLog(@"对等方 %@ 拒绝了邀请。", peerID.displayName); // 在这里处理邀请被拒绝后的逻辑 } }
2. 在多对等框架中,当发送方调用代码[self.browser invitePeer:peerID toSession:self.session withContext:nil timeout:INVITE_TIMEOUT]向接收方发送邀请后,若接收方拒绝该邀请,发送方是否有办法检测到这一状态?
当然可以!还是通过上面提到的session:didReceiveInvitationResponse:fromPeer:context:代理方法来检测。无论接收方接受还是拒绝邀请,这个方法都会被触发,你只需要通过invitationAccepted这个布尔值来区分两种结果即可。
另外补充一点:如果邀请在INVITE_TIMEOUT超时时间内没有得到接收方的回应,框架不会触发拒绝回调,这时你可以自行通过定时器来跟踪邀请生命周期,处理超时场景。
内容的提问来源于stack exchange,提问作者Rajneesh071
相关产品推荐
相关产品推荐

