8

当我第一次运行我的应用程序时,我希望能够知道运行我的应用程序的用户是否连接到 GameCenter(通过 GameCenter 应用程序或通过其他应用程序)。

我发现如果我检查布尔值:

[GKLocalPlayer localPlayer].authenticated)

它返回假。我想可能解决这个问题的一件事是在启动时运行:

[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error)

但是,如果用户未连接,这会弹出游戏中心,请求现有帐户或创建新帐户。

所以我的问题是:有没有办法在我的应用程序关闭时知道我的用户在我的应用程序之外连接了 GC,而不会在他没有连接的情况下弹出上述警报?

谢谢!!

4

2 回答 2

4

您可以在 iOS 6.0 或更高版本上执行此操作:

GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
    localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){
        if (viewController == nil && error == nil) {
            NSLog(@"Here, you know that the user has already signed to Game Center, whether in through your app or not.");
        } 
    };
于 2013-01-23T18:58:14.107 回答
0

在我看来,Game Center 在每个不同的应用程序中验证用户,而不是通过 iOS 全局验证。authenticateWithCompletionHandler:因此,如果不使用该方法,您将无法检查用户的身份验证状态。

顺便说一句,我认为你应该修改这个用户界面机制。它会给你带来几个问题。Game Center 身份验证将使用在所有应用程序之间共享的全局帐户(首先是 App Store 帐户),您应该依靠 Game Center 来处理身份验证。假设您可以做您正在寻找的事情(我认为这是不可能的),如果您已经通过 3rd 方应用程序登录,您甚至可以在您的应用程序中登录到 GC;但是如果你没有在你的应用程序之外登录,你将无法在你的应用程序中使用 GC。

这对您来说可能是个问题,因为如果用户有一个有效的帐户,并且他当前已从“设置”应用程序中退出 App Store,他将无法为您的应用程序登录 GC(因为您不想向用户显示登录警报)。您将不得不依赖 3rd 方应用程序来启用所有 GC 功能。因此,此时 GC 将变得无用。

这真的是您想要的应用程序吗?如果用户可能无法有效地使用它,为什么要启用 GC?

于 2011-06-07T07:15:39.837 回答