2013-10-14 20 views
1

我使用这个方法询问附近的设备加入会话: 当我这样做,我也开始旋转的指标invitePeer超时7

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

是否有一个叫方法超时时间?如果其他设备超出范围会怎么样?

编辑:

我注意到,这种状态不会被调用:

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

回答

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使警报弹出马上。

0

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