Gamecenter matchdata没有更新

时间:2013-04-19 09:35:23

标签: ios game-center gamekit ios6.1

我对GameKit有一个奇怪的问题。我想知道是否有其他人遇到同样的问题。这是一个错误吗?

我使用游戏套件实现了一个基本的回合制游戏。玩家邀请另一个

+ (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,当然还有沙箱。

1 个答案:

答案 0 :(得分:3)

loadMatchesWithCompletionHandler:调用只获取匹配的元数据,例如谁在玩,游戏的状态是什么等等。基本上你在概览视图控制器中显示的信息。

要获取匹配数据blob的最新版本,请在显示游戏之前在loadMatchDataWithCompletionHandler:对象上调用GKTurnBasedMatch。在某些方面,这也必须在发送转弯或结束比赛后完成!