ios - Game Center - 回合制游戏问题

标签 ios xcode game-center gkturnbasedmatch

我正在为 iOS 开发一款带有自定义界面的回合制游戏,我发现我的配对界面存在一个非常奇怪的问题。以下代码用于显示事件匹配列表,我对用户进行身份验证,然后获取匹配列表,最后一步是加载匹配,以便我可以显示所有信息。

当我构建应用程序时出现问题,转到配对 View Controller 并将其放置 5 分钟;然后,当我尝试删除匹配项时,我在 loadingMatchWithID:

中收到错误消息
Error Domain=NSCocoaErrorDomain Code=4097 "The operation couldn’t be completed. (Cocoa error 4097.)

代码每次都运行良好,删除、创建匹配项、刷新,但如果我将 View Controller 单独放置 5 分钟,然后尝试删除,我会收到错误消息。奇怪的是 localPlayer 通过了身份验证测试,并正确加载了匹配数组,然后停止加载匹配。

还有一件事发生了,如果出现错误并且我按下主页按钮并重新打开应用程序,一切都会再次出现并且匹配项会正确加载。

我认为我的身份验证有问题,但错误在哪里?

更新:问题出现在 iOS7 中,但在 iOS6 中有效!

[localPlayer authenticateWithCompletionHandler:^(NSError *error)
    {
       if (error)return; 
       [GKTurnBasedMatch loadMatchesWithCompletionHandler:^(NSArray *matches, NSError *error)
       {
          for (int i = 0; i < matchesArray.count; i++)
          {
             [GKTurnBasedMatch loadMatchWithID:[[matchesArray objectAtIndex:i]matchID] withCompletionHandler:^(GKTurnBasedMatch *updatedMatch, NSError *error)
             {
                 if (error != nil)
                 {
                     NSLog(@"Error: %@",error.description);
                 }
              }];
           }
       }];
    }];

最佳答案

经过多天的搜索和测试,我发现了问题所在。问题在于退出然后删除匹配项,removeWithCompletionHandler: 位于 participantQuitInTurnWithOutcome: 中,并且这些操作会以某种方式从游戏中心注销玩家,而无需任何通知,并且奇怪的是所有 .isAuthenticated 测试都会成功。

可能最令人沮丧的部分是代码大部分都能正常工作,并且每次都能在 iOS 7 以下的设备上正常工作。

关于ios - Game Center - 回合制游戏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23775575/

相关文章:

iphone - 如何解析Json对象

iphone - Cocos 2d 和 Game Center(排行榜问题)

ios7 - 无法在 iOS 7 上登录 Sandbox 游戏中心

ios - 需要帮助设置两个等宽的按钮,并排自动布局

ios - IOS设备上Unity WEBGL中的音频

ios - UIActivityViewController 错误 : Failed to determine whether URL is managed by a file provider

swift - 从 URL 检索并显示多个图像

ios - 如何根据缩放级别为 map 锻炼相关注释?

xcode - Swift:如何在 Playground 中绘制 UI?

iphone - iOS 游戏玩家 ID