gpt4 book ai didi

ios - Gamecenter 匹配数据未更新

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:25 26 4
gpt4 key购买 nike

我在使用 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,当然还有沙箱。

最佳答案

loadMatchesWithCompletionHandler: 调用仅获取比赛的元数据,例如谁在比赛、比赛的状态等。本质上是您要在概览 View Controller 中显示的信息.

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

关于ios - Gamecenter 匹配数据未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16101599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com