1

我在 iOS 中有一个使用 GameKit 的回合制游戏。通常,我的 Game Center 身份验证有效。我的游戏有效,我可以在一段时间内来回发送动作。但是,当我尝试在 Game Center 上执行某个操作(例如,寻找新的比赛)时,相对频繁但并非经常发生,它会失败并出现以下错误:

Error Domain=GKErrorDomain Code=6 “请求的操作无法完成,因为本地播放器尚未通过身份验证。” UserInfo={NSLocalizedDescription=请求的操作无法完成,因为本地播放器尚未通过身份验证。}

然而,GKLocalPlayer.localPlayer().authenticated = true,无论是在收到错误之前还是之后。收到此错误后,不会显示身份验证视图控制器,并且依赖身份验证的 GameKit 方法停止运行(它们不会恢复活力)。然后,如果我将应用程序发送到后台,然后将其带回前台,则当我重试该操作时错误不会返回(无需输入新的登录名和密码)。

根据这个类似的观察:

GKLocalPlayer 身份验证不起作用,但 isAuthenticated 返回 YES(游戏中心沙盒)

“1.如果您的设备日期不正确,Game Center将无法完成认证。所以,请继续检查当前日期。

  1. 你可能已经这样做了。我相信你 - iOS 模拟器 >> 重置内容和设置”

我在设备上遇到了这个问题,而不是在模拟器上,排除了#2。有人可以帮我解决#1吗?我在这里可能很天真,但我的 iPhone 和 iPad 有正确的时间和日期。我应该检查和设置什么或其他地方吗?

那么,如果这不是问题,那还有什么问题呢?我正在运行iOS9。

4

1 回答 1

1

我也看到了这个,并且对 Apple 有一个开放的错误。就我而言,我正在使用多个物理设备进行测试,并且只有其中一个设备遇到过这种情况。在该特定设备上,我使用个人帐户登录 iTunes,但使用测试帐户登录游戏中心。

据我所知,当设备使用相同的登录方式登录iTunesiCloudgame Center时,没有问题。但是,当我尝试混合和匹配帐户以进行我需要做的任何测试时,我随机得到错误 6。

除了让用户重新登录游戏中心外,似乎没有任何办法可以从中恢复。当然,没有办法再次显示登录视图控制器,所以唯一的选择是让用户离开游戏,将其关闭,然后重新启动(重新启动游戏中心身份验证过程)。我现在捕获错误,给用户一条消息说 Game Center 已将他们注销,并解释他们需要做些什么。

但正如我所说,当我停止在设备上混淆凭据时,问题就消失了。

顺便说一句,在一个稍微相关的话题上,我开始认为 .authenticated 属性完全不可靠。在您实际上没有连接到 Game Center 的情况下,这将是 TRUE。我也为此打开了一个错误。苹果关闭它说这是通过使用“缓存”数据按预期工作的。因此,它会在未通过身份验证时报告已通过身份验证,并仅允许您访问以前保存在本地的过时比赛和排行榜数据。

于 2015-10-17T15:48:53.140 回答