所以,我正在写一个非常简单的实时游戏中心2人游戏;然而,问题是我一直在断开连接。
游戏的工作原理如下:每个玩家的设备上都有一个文本字段。他们每个都在字段中输入文本并按Enter键。当两个人都输入文字时,游戏就会进行。
现在,当用户正在积极地玩游戏(每10秒左右输入一次文本)时,游戏工作正常,用户从未断开连接。但是,当游戏保持不活动状态(用户只是坐着并盯着应用程序屏幕)大约30秒或更长时间时,至少有一个玩家会断开连接。
我非常有信心我的互联网很稳固,两台设备似乎都连接到互联网(通过wifi)。
我知道这是一个非常模糊的问题,我只是想知道是否有人有任何与上述粗体症状有关的想法。
编辑:
以下是我如何初始化matchrequest和匹配。但是,我在初始化或开始比赛时没有遇到任何问题。唯一的问题是玩家闲置一段时间
//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:
所以,我发现如果我设置一个计时器并通过网络发送消息([self.myMatch sendDataToAllPlayers:data withDataMode:GKMatchSendDataReliable error:& error])每1秒钟一次,程序可以工作正好。有没有人知道这是为什么或如何解决我的问题而不诉诸于一起被黑客攻击NSTimer
?
其他说明:
1)我的AppDelegate
尚未更改