Multipeer Connectivity iOS 7中的invitePeer超时

Posted

技术标签:

【中文标题】Multipeer Connectivity iOS 7中的invitePeer超时【英文标题】:invitePeer timeout in Multipeer Connectivity iOS 7 【发布时间】:2013-10-14 18:20:37 【问题描述】:

我正在使用此方法请求附近的设备加入会话: 当我这样做时,我也会开始旋转指示器

[browser invitePeer:key
          toSession:session
        withContext:nil
            timeout:30];

是否有在超时时刻调用的方法?如果其他设备超出范围怎么办?

编辑:

我注意到这个状态永远不会被调用:

if (state == MCSessionStateConnecting) 
    NSLog(@"CONNECTING %@", peerID);

【问题讨论】:

【参考方案1】:

如果浏览器端超时,您需要注意 MCSessionStateNotConnected 状态。我做这样的事情:

- (void)session:(MCSession *)session
           peer:(MCPeerID *)peerID
 didChangeState:(MCSessionState)state 

     if (state == MCSessionStateNotConnected) 
     
          if (self.isWaitingForInvitation) 
          
                UIAlertView *alertView = [[UIAlertView alloc]
                            initWithTitle:NSLocalizedString(@"ERROR_TITLE", nil)
                            message:NSLocalizedString(@"ERROR_TEXT", nil)
                            delegate:self
                            cancelButtonTitle:NSLocalizedString(@"NO", @"Não")
                            otherButtonTitles:NSLocalizedString(@"YES", @"Sim"),
                                                                     nil];
                dispatch_sync(dispatch_get_main_queue(), ^
                    [alertView show];
                );
                self.isWaitingForInvitation = NO;
         

使用 dispatch_sync 立即弹出警报。

【讨论】:

【参考方案2】:

使用具有匹配超时参数的计时器间隔的计时器可能是更好的主意。

【讨论】:

以上是关于Multipeer Connectivity iOS 7中的invitePeer超时的主要内容,如果未能解决你的问题,请参考以下文章

Multipeer Connectivity IOS:didFinishReceivingResourceWithName 错误处理(崩溃)

在 Swift 中通过 Multipeer Connectivity 临时同步两个 iOS 设备

Multipeer Connectivity foundDevice 两次

我可以通过 iOS Multipeer Connectivity 发送多大的消息?

iOS8 AVAudioEngine如何通过Multipeer Connectivity发送麦克风数据?

iOS Multipeer Connectivity Framework 的实际形而上学半径是多少?