在 iOS 6 中使用 authenticateHandler 时,如果用户取消它,游戏中心将不会显示登录视图。我意识到游戏中心会在 3 次取消尝试后自动锁定应用程序,但我说的只是 2 次尝试。如果他们取消登录,他们必须离开应用程序并在游戏中心显示登录之前返回,即使再次设置了 authenticateHandler 也是如此。关于如何在 iOS 6 中处理这种情况的任何想法?
使用较旧的 authenticateWithCompletionHandler 方法时效果很好:
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0
GKLocalPlayer.localPlayer.authenticateHandler = authenticateLocalPlayerCompleteExtended;
#else
[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:authenticateLocalPlayerComplete];
#endif
这对我的应用很重要的原因是它需要 Game Center 进行多人游戏。该应用程序会在启动时尝试向游戏中心进行身份验证,但如果用户取消,我们不会在启动时再次询问他们,这样他们就不会被唠叨。如果他们在选择多人游戏时没有登录,我们所做的是显示一个 Game Center 登录按钮。登录按钮通过调用 authenticateWithCompletionHandler(现在再次设置 GKLocalPlayer.localPlayer.authenticateHandler)来强制登录游戏中心。