2013-10-14 30 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

使用具有定時器間隔匹配超時參數的計時器可能是更好的主意。