Multipeer Connectivity iOS 7中的invitePeer超时

时间:2013-10-14 18:20:37

标签: ios multipeer-connectivity

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

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

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

编辑:

我注意到这个状态从未被调用过:

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

2 个答案:

答案 0 :(得分:4)

如果浏览器端超时,则需要注意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立即弹出警报。

答案 1 :(得分:0)

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