2

在我的应用程序中,应用程序会在打开时提示用户登录 GameCenter。如果他们拒绝,我想让他们在手动按下 GameCenter 按钮后能够登录。但是,我在启动时用来对它们进行身份验证的代码在启动后的任何时候都不会打开身份验证视图控制器。有什么建议吗?我在用着:

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

谢谢

4

1 回答 1

0

它在文档的清单 3-1“设置身份验证处理程序”中进行了解释(虽然有点不清楚)。这是我所做的:

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

-(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,所以我可以稍后显示。

于 2013-11-30T07:39:45.707 回答