重试GameCenter身份验证

时间:2013-04-14 07:43:31

标签: objective-c center gamekit

在我的应用中,应用会提示用户在打开时立即登录GameCenter。如果他们拒绝了,我想让他们在手动按下GameCenter按钮后能够登录。但是,我在启动时用于验证它们的相同代码不会在启动后随时打开身份验证视图控制器。有什么建议? 我正在使用:

GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
[localPlayer setAuthenticateHandler:(^(UIViewController* viewcontroller, NSError *error) {

由于

1 个答案:

答案 0 :(得分:0)

它在documentation 的清单3-1“设置身份验证处理程序”中进行了解释(尽管有点不清楚)。这是我的工作:

  • 如果没有经过身份验证的播放器,我会存储该块返回的视图控制器,并在玩家尝试启动“多人游戏”游戏时显示。这比每次应用程序启动时立即显示视图控制器要好,因为有些人没有或不想要游戏中心帐户,也可能不想创建一个。
  • 如果经过身份验证,我会启用游戏中心功能,然后当玩家尝试启动游戏时,我会直接启动多人游戏(显然无需在此处显示控制器)。
  • 如果该过程失败,那么我将禁用游戏中心功能和多人游戏,并显示与您相同的消息,通过游戏中心应用程序登录,并提供启动游戏中心应用程序的选项。 。 代码几乎与apple文档中的代码完全相同:

-(void)authenticateLocalPlayer
{
    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
    __weak GKLocalPlayer *blockLocalPlayer = localPlayer;

    //Block is called each time GameKit automatically authenticates
    localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error)
    {
        [self setLastError:error];
        if (viewController)
        {
            self.authenticationViewController = viewController;
            [self disableGameCenter];
        }
        else if (blockLocalPlayer.isAuthenticated)
        {
            [self authenticatedPlayer:blockLocalPlayer];
        }
        else
        {
            [self disableGameCenter];
        }
    };
}

self.authenticationViewControllerstrong,所以我可以稍后再展示。