私はGKMatchをかなりの期間アプリで使用しています。私は追いかけられていて、時々停止してゲームに出てきて、送信されたパケットを追跡したが受信しなかった。これはたまにしか起こらないが、私はそれがなぜ起こるのかを追跡できないようだ。Game Center GKMatch GKSendDataReliableパケットが紛失しました
すべてのメッセージは、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];
}
何が起こる参照して、定期的に(多分1 100内のメッセージ) '「sendDataToAllPlayers」メソッドからエラーなしで送信されますが、受信デバイスがヒットされることはありませんということですdidReceiveData 'メソッドを呼び出します。私の理解は、GKSendDataReliableを使用すると、メッセージを送信し、肯定応答を受け取るまで別のメッセージを送信しないはずです。メッセージは受信されませんが、新しいメッセージは同じデバイスから送信されます。
送信メソッドは「はい」を返し、エラーはnilですが、didReceiveDataは決してヒットしません...!
誰もこれを見たことがありますか?誰にもこれが何であるか考えていますか?私はこれをデバッグするために他に何ができるのか分かりません。
ユーザーは、ゲーム中に一部のデータが誤って失われている可能性もあると不平を言う。しかし、私はまだ自分自身でこのバグを再現することはできません。このバグが一貫して再現可能なサンプルプロジェクトがありますか?はいの場合は、共有してもらえますか?ありがとう。 – Yan
私のプロジェクトは非常に大きく(現時点では店内のアクティブなアプリですが)、一貫して再現可能かどうかを調べるために小さなバージョンをまとめてみます。 –
私は同じ問題を抱えています。特に、いずれかのデバイスのインターネット接続が弱い場合。 GKSendDataReliableが肯定応答を受け取るまでメッセージの送信を停止するのは本当ですか? – jyek