私はアプリで GKMatch をかなり長い間使用してきました。私は追跡しており、ゲームが時々停止するという問題を抱えており、パケットが送信されているが受信されていないことを突き止めました. これはたまにしか発生しませんが、なぜ発生するのかを追跡できないようです。
すべてのメッセージは GKSendDataReliable を使用して送信されます。
ロギングは、パケットが 1 つのデバイスから正常に送信されていることを示していますが、ターゲット デバイスでは決して受信されません。
//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];
}
...
//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];
}
私が見ているのは、「sendDataToAllPlayers」メソッドから定期的に (おそらく 100 件のメッセージに 1 件) 送信されますが、受信デバイスが「didReceiveData」メソッドにヒットすることはありません。私の理解では、GKSendDataReliable を使用するとメッセージが送信され、確認を受信するまで別のメッセージは送信されません。メッセージは受信されませんが、同じデバイスから新しいメッセージが送信されます。
送信メソッドは「YES」を返し、エラーはゼロですが、didReceiveData はヒットしません...!
誰もこれを見たことがありますか?誰にもこれが何であるか考えがありますか? これをデバッグするために他に何ができるかわかりません。