앱에서 GKMatch를 사용하고 있습니다. 나는 쫓아 다니며 때때로 게임을 중단하고 패킷을 보내지 만 수신하지 못하도록 추적했다. 가끔씩 만 발생하지만 왜 그런 일이 발생했는지 추적 할 수는 없습니다.Game Center GKMatch GKSendDataReliable 패킷이 손실되었습니다.
모든 메시지는 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];
}
은 ...
//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