小编Jon*_*ert的帖子

游戏中心GKMatch GKSendDataReliable数据包丢失

我在应用程序中成功使用GKMatch已经有一段时间了.我一直在追逐游戏并偶尔停止游戏,并将其跟踪到正在发送但未收到的数据包.这只是偶尔发生,但我似乎无法追查它为什么会发生.

所有消息都使用GKSendDataReliable发送.

记录显示数据包正在从一台设备成功发送,但从未在目标设备上接收.

//Code sample of sending method....
//self.model.match is a GKMatch instance    
-(BOOL) sendDataToAllPlayers:(NSData *)data error:(NSError **)error {
        [self.model.debugger addToLog:@"GKManager - sending data"];
        return [self.model.match sendDataToAllPlayers:data withDataMode:GKSendDataReliable error:error];
    }
Run Code Online (Sandbox Code Playgroud)

...

//Code sample of receiving method....
// The match received data sent from the player.
-(void)match:(GKMatch *)match didReceiveData:(NSData *)data fromPlayer:(NSString *)playerID {
    [self.model.debugger addToLog:@"GKManager - received data"];
    [super didReceiveData:data fromPlayer:playerID];
}
Run Code Online (Sandbox Code Playgroud)

我所看到的是周期性地(可能是100个消息中的1个)在没有错误的情况下从'sendDataToAllPlayers'方法发送,但是接收设备永远不会遇到'didReceiveData'方法.我的理解是,使用GKSendDataReliable应该发送消息,然后在收到确认之前不会发送另一个消息.未收到消息,但从同一设备发送新消息.

发送方法返回'YES'并且错误是nil,但didReceiveData永远不会被命中......!

有没有人见过这个?有没有人有任何想法这可能是什么?我不知道我还能做些什么来调试这个.

multiplayer gksession ios game-center

11
推荐指数
1
解决办法
931
查看次数

标签 统计

game-center ×1

gksession ×1

ios ×1

multiplayer ×1