我可以在我的应用程序外检查Game Center身份验证状态吗?

Ida*_*dan 8 iphone cocoa-touch objective-c game-center

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

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

[GKLocalPlayer localPlayer].authenticated)
Run Code Online (Sandbox Code Playgroud)

它返回false.我想有一件事可能会解决这个问题,就是在启动时运行:

[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error)
Run Code Online (Sandbox Code Playgroud)

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

所以我的问题是:当我的应用程序关闭时,有没有办法知道我的用户连接我的应用程序之外的GC,如果他没有连接,没有弹出上面的警报?

谢谢!!

mar*_*wer 0

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

顺便说一句,我认为你应该修改这个用户界面机制。它会给你带来一些问题。Game Center 身份验证将使用所有应用程序共享的全局帐户(首先是 App Store 帐户),您应该依靠 Game Center 来处理身份验证。假设您可以执行您想要的操作(我认为这是不可能的),如果您已经通过第 3 方应用程序登录,那么您甚至可以在您的应用程序中登录 GC;但如果您没有在应用程序外部登录,您将无法在应用程序中使用 GC。

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

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