2013-04-19 4 views
3

GameKit에 이상한 문제가 있습니다. 나는 다른 사람들이 같은 문제를 겪고 있는지 알고 싶다. 그게 버그 야?게임 센터의 matchdata가 업데이트되지 않습니다.

게임 키트를 사용하여 기본 회전 기반 게임을 구현했습니다. 플레이어는 다른

+ (void)findMatchForRequest:(GKMatchRequest *)request withCompletionHandler:(void (^)(GKTurnBasedMatch *match, NSError *error))completionHandler 

초대 끝

- (void)endTurnWithNextParticipants:(NSArray *)nextParticipants turnTimeout:(NSTimeInterval)timeout matchData:(NSData *)matchData completionHandler:(void (^)(NSError *error))completionHandler 

두 번째 선수가 받아 전원을 켜고 게임이 시작됩니다. 두 번째 플레이어는 자신의 턴을했다 후에 그는 모든 것이 잘 작동

- (void)endTurnWithNextParticipants:(NSArray *)nextParticipants turnTimeout:(NSTimeInterval)timeout matchData:(NSData *)matchData completionHandler:(void (^)(NSError *error))completionHandler 

등등 ...

선수도 사용자 정의 메시지로 알림을 수신 설정 끝납니다.

앱 (다른 플레이어)이 백그라운드에서 알림 배너를 탭하여 앱을 시작한 경우에도 작동합니다.

앱이 기기에서 백그라운드로 실행되고 다른 기기가 회전을 끝내면 문제가 발생합니다. 첫 번째 기기는 회전에 대한 알림을 받지만 앱을 시작하면 (알림 배너를 탭하지 않고 수동으로)로드를 검색하여 이전 일치 데이터를 얻습니다.

+ (void)loadMatchesWithCompletionHandler:(void (^)(NSArray *matches, NSError *error))completionHandler 

내 앱에 게임 데이터를 저장하지 않고 일시적인 개체 만 유지합니다. 두 장치에서 응용 프로그램을 닫고 다시 일치를 시도했습니다. 그들은 게임 센터의 서버와 다른 일치 데이터를 얻습니다. 그 중 하나는 이전 데이터를 가져오고 다른 하나는 차례를 마친 업데이트 된 일치 데이터를 가져옵니다.

다음과 같은 방법으로 시도해 보았지만 작동하지만 그걸로 끝낼 수는 없습니다.

- (void)saveCurrentTurnWithMatchData:(NSData *)matchData completionHandler:(void (^)(NSError *error))completionHandler 

나는 시뮬레이터를 사용하지 않지만 장치 만 테스트합니다. SDK 6.1, iOS 6.0.1 및 물론 샌드 박스.

답변

3

loadMatchesWithCompletionHandler: 호출은 누가 경기하고 있는지, 게임의 상태가 어떤지 등과 같은 일치 항목의 메타 데이터 만 가져옵니다. 본질적으로 개요보기 컨트롤러에 표시 할 정보는 무엇입니까?

일치 데이터 BLOB의 최신 버전을 얻으려면 게임을 표시하기 전에 GKTurnBasedMatch 개체에서 loadMatchDataWithCompletionHandler:으로 전화하십시오. 어떤 점에서 이것은 턴을 보내거나 성냥을 끝내고 나서해야만합니다!

관련 문제