GameKit Error表示播放器未经过身份验证,但.authenticated属性= true

时间:2015-10-10 22:42:46

标签: ios game-center gamekit gkturnbasedmatch

我在iOS中使用GameKit进行回合制游戏。通常,我使用Game Center进行身份验证。我的游戏有效,我可以在一段时间内来回移动。但是,当我尝试在Game Center上执行某个操作(例如,找到新的匹配项)时,相对频繁但不经常,它会因错误而失败:

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

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

根据这个类似的观察:

GKLocalPlayer authentication not working, but isAuthenticated returns YES (Game Center sandbox)

“1.如果您的设备日期不正确,游戏中心无法完成身份验证。请继续查看当前日期。

  1. 你可能已经这样做了。我相信你 - iOS模拟器>>重置内容和设置“
  2. 我在设备上遇到了这个问题,而不是模拟器,排除了#2。有人可以帮助我#1吗?我可能在这里天真,但我的iPhone和iPad有合适的时间和日期。我应该检查和设置其他什么东西吗?

    然后,如果这不是问题,还有什么可能是问题?我正在运行iOS9。

1 个答案:

答案 0 :(得分:0)

我也看过这个,并且与Apple有一个漏洞。就我而言,我正在使用多个物理设备进行测试,并且只有其中一个设备遇到过此问题。在该特定设备上,我使用个人帐户登录iTunes,但使用测试帐户登录游戏中心。

据我所知,当设备使用 iTunes iCloud 游戏中心的相同登录时,没有问题。但是,当我尝试将帐户混合搭配以进行我需要做的任何测试时,我会随机获得错误6.

除了让用户重新登录游戏中心之外,似乎无论如何都无法从中恢复。当然,没有办法再次呈现登录视图控制器,因此唯一的选择是让用户离开游戏,杀掉游戏并重新加注(重新开始游戏中心认证过程) 。我现在捕获错误,给用户一条消息,说游戏中心已将其记录下来,并解释他们需要做些什么。

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

顺便说一句,就一个稍微相关的话题,我来看看.authenticated属性是完全不可靠的。在您实际上没有连接到Game Center的情况下,它将为TRUE。我也开了一个bug。苹果公司关闭它说这是按照预期使用"缓存"数据。因此,它会在未经过身份验证时报告已验证的身份,并且只允许您访问之前已在本地保存的过时匹配和排行榜数据。