iphone - Real Time Game Center 游戏断开连接(可能是因为网络超时)

标签 iphone ios objective-c game-center gamekit

所以,我正在编写一个非常简单的实时游戏中心 2 人游戏;但是,问题是我总是断开连接。

游戏的运作方式如下:每个玩家的设备上都有一个文本字段。他们各自在字段中输入文本并按下回车键。当两个人都输入了文本后,游戏就会进行。

现在,当用户积极玩游戏(每 10 秒左右输入一次文本)时,游戏运行良好,用户从未断开连接。但是,当游戏保持不活动状态(用户只是坐着盯着应用屏幕)大约 30 秒或更长时间时,至少有一名玩家会断开连接。

我非常有信心我的互联网是可靠的,而且两台设备似乎都已连接到互联网(通过 wifi)。

我知道这是一个非常模糊的问题,我只是想知道是否有人对上面粗体的症状有任何想法。

编辑:

下面是我如何初始化匹配请求和匹配项。但是,我在初始化或开始比赛时没有遇到任何问题。唯一的问题是当玩家闲置一段时间

//toInvite may be nil
- (void) createMatchWithPlayersToInvite: (NSArray *) toInvite
{
    GKMatchRequest *request = [[GKMatchRequest alloc] init];
    request.minPlayers = 2;
    request.maxPlayers = 2;
    request.playersToInvite = toInvite;
    GKMatchmakerViewController *mmvc = [[GKMatchmakerViewController alloc] initWithMatchRequest:request];
    self.myMatchmakerVC = mmvc;
    mmvc.hosted = NO;
    mmvc.matchmakerDelegate = self;
    [self presentViewController:mmvc animated:YES completion:nil];
}


- (void)matchmakerViewController:(GKMatchmakerViewController *)viewController didFindMatch:(GKMatch *)match
{
    [self dismissViewControllerAnimated:YES completion:nil];
    self.myMatch = match;
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    appDelegate.currentMatch = self.myMatch;
    if (!self.matchStarted && match.expectedPlayerCount == 0)
    {
        self.matchStarted = YES;
        [self performSegueWithIdentifier:@"gameSegue" sender:self];
    }
}

编辑 2:

所以,我发现如果我设置一个计时器并每隔 1 秒通过网络发送消息(使用 [self.myMatch sendDataToAllPlayers:data withDataMode:GKMatchSendDataReliable error:&error]),程序就可以正常工作.有谁知道这是为什么,或者我如何解决我的问题而不求助于一起被黑的 NSTimer 其他说明:

1) 我的 AppDelegate 没有改变

最佳答案

看起来您在这里有一个明确的假设,即 Game Center 连接在 30 秒空闲时间后关闭。如果是这样的话,我不会感到惊讶。其他游戏几乎肯定会在这样的时间间隔内发送数据,您可能会触发超时条件。为了检验这个假设并同时解决问题,我会每隔五秒或十秒发送一条简短的盲文。

关于iphone - Real Time Game Center 游戏断开连接(可能是因为网络超时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14487176/

相关文章:

iphone - 在iPhone上创建ADTS框架...问题

iphone - 我无法在 UITabBar 中重新排列 UITabBarItem

iphone - 如何在像 obj-c 的 Map 方法这样的 ruby​​ 中迭代时跳过对象

objective-c - UIView 的背景缩放不正确并且偏移

ios - 应用程序未运行时无法接收推送通知

ios - 覆盖 iOS 框架符号

c++ - 随机数生成

iphone - 如何呈现登录工作流程? (模态和导航 Controller )

iphone - 在警报中显示当前 View Controller 的名称

iphone - 我们如何在小 UIImageview 上设置大 UIImage