1

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

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

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

编辑:

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

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

2 回答 2

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 立即弹出警报。

于 2013-10-15T00:49:07.427 回答
0

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

于 2014-12-19T10:36:29.010 回答