【发布时间】:2015-10-10 22:42:46
【问题描述】:
我有一个在 iOS 中使用 GameKit 的回合制游戏。通常,我的 Game Center 身份验证有效。我的游戏有效,我可以在一段时间内来回发送动作。然而,当我尝试在 Game Center 上执行一个动作(例如,寻找新的比赛)时,它相对频繁但不是经常发生,它失败并出现错误:
Error Domain=GKErrorDomain Code=6 "请求的操作无法完成,因为本地播放器尚未通过身份验证。" UserInfo={NSLocalizedDescription=请求的操作无法完成,因为本地播放器尚未通过身份验证。}
然而,GKLocalPlayer.localPlayer().authenticated = true,无论是在收到错误之前还是之后。收到此错误后,不会显示身份验证视图控制器,并且依赖身份验证的 GameKit 方法停止运行(它们不会恢复活力)。然后,如果我将应用程序发送到后台,然后将其带回前台,则当我重试该操作时不会返回错误(无需输入新的登录名和密码)。
根据类似的观察:
GKLocalPlayer authentication not working, but isAuthenticated returns YES (Game Center sandbox)
“1.如果您的设备日期不正确,Game Center 将无法完成身份验证。因此,请继续检查当前日期。
- 您可能已经这样做了。我相信你 - iOS 模拟器 >> 重置内容和设置"
我在设备上遇到了这个问题,而不是在模拟器上,排除了#2。有人可以帮我解决#1吗?我在这里可能很天真,但我的 iPhone 和 iPad 有正确的时间和日期。我应该检查和设置什么或其他地方吗?
那么,如果这不是问题,还有什么问题?我正在运行 iOS9。
【问题讨论】:
-
你知道如何解决这个问题吗?我在游戏中遇到了这个错误。
-
这对我来说似乎不再是一个大问题,但每隔一段时间我的应用程序确实无法通过身份验证。当这种情况发生时,我知道解决它的唯一方法是关闭应用程序并再次打开它。出现错误时,当应用程序仍在运行时,我没有成功重新验证。此外,当事情进展不顺利时,一般不能依赖 .authenticated = true。
-
我遇到了完全相同的问题。这个问题是否只发生在沙盒或实时环境中?当 70% 的情况下在沙盒中成功运行时,我可以假设我的代码正常吗?我看不出它现在和下一次在完全相同的条件下会失败的任何原因。有什么想法吗?
标签: ios game-center gamekit gkturnbasedmatch