2013-10-14 6 views
1

Я использую этот метод, чтобы задать близлежащее устройство, чтобы присоединиться к сессии: Когда я делаю это, я также начинаю вращаться ПоказательinvitePeer тайм-аут в Multipeer Connectivity прошивке 7

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

Есть ли способ, называемый в момент таймаута? что, если другое устройство выходит за пределы допустимого диапазона?

EDIT:

Я заметил, что это состояние никогда не называют:

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

Использование таймера с параметром тайм-аута интервала таймера может быть лучше.

Смежные вопросы