我有一个奇怪的问题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,当然还有沙盒。