0

在应用程序中,invitationDidFail 被调用,有时它连接正确,但有时它没有......

拒绝连接的可能原因是什么?

// Display an alert sheet indicating a failure to connect to the peer.
- (void) invitationDidFail:(SessionManager *)session fromPeer:(NSString *)participantID
{
NSString *str;
if (alertView.visible) {
    // Peer cancelled invitation before it could be accepted/rejected
    // Close the invitation dialog before opening an error dialog
    [alertView dismissWithClickedButtonIndex:0 animated:NO];
    [alertView release];
    str = [NSString stringWithFormat:@"%@ is busy.\nPlease again", participantID];
    //[peerList removeAllObjects];
    [self peerListDidChange:nil];
    [self.tableData reloadData];
    //[self TwoPlayer:self];
} else {
    // Peer rejected invitation or exited app.
    str = [NSString stringWithFormat:@"%@ is busy.\nPlease try again", participantID];
    //[peerList removeAllObjects];
    [self peerListDidChange:nil];
    [self.tableData reloadData];
    //[self TwoPlayer:self];
  }
}

即使它不调用此方法,也可以确定该设备未与任何其他设备配对,那么有时它确实接受并调用didReceivedInvitation 方法,或者有时它通过调用invitationDidFail 拒绝的原因是什么。

// Invitation dialog due to peer attempting to connect.
- (void) didReceiveInvitation:(SessionManager *)session fromPeer:(NSString     *)participantID;
{
[alertView dismissWithClickedButtonIndex:1 animated:NO];

NSString *str = [NSString stringWithFormat:@"Incoming Invite from %@", participantID];
if (alertView.visible) {
    [alertView dismissWithClickedButtonIndex:0 animated:NO];
    [alertView release];
}
alertView = [[UIAlertView alloc] 
             initWithTitle:str
             message:@"Do you wish to accept?" 
             delegate:self 
             cancelButtonTitle:@"Decline" 
             otherButtonTitles:nil];
[alertView addButtonWithTitle:@"Accept"]; 
[alertView show];
}
4

1 回答 1

1

当我最近使用连接编写应用程序时,我使用了 GKSession。我花了数周时间尝试调试它的连接问题,最后我放弃并停止使用它。连接时 GKSession 似乎存在许多问题,特别是如果您断开连接然后尝试在短时间内重新连接(短时间内可能是 1 分钟或更长时间)。似乎连接没有正确删除,然后它没有正确重新创建连接。

最后我取出了所有的 GKSession 代码并改用它。工作了一次 - 没有更多的连接问题。

GCD 异步套接字

于 2011-06-28T08:38:05.213 回答