关于ios:GameCenter-在调用处理程序之前检查以前的登录信息吗?

GameCenter - check previous login before calling handler?

我的应用程序使用Game Center。我尝试在VC加载时记录用户。
如果他以前曾被登录过-很好,它将以通知顶部登录他。如果他没有登录-很好,则显示Game Center登录VC。

但是,我不想在Game Center登录VC进入该应用程序的用户上"跳转"。我希望有一个按钮可以调出Game Center登录VC,这很容易做到,因此只有当他单击该按钮时,Game Center登录VC才会出现。

问题是-我发现(通过反复试验),如果我尝试登录用户,但失败(例如,用户根本没有登录Game Center),并且我没有当时带了Game Center登录VC(在处理程序的第一个调用中),以后我再也不能调出它。

我将解释-我实现了我所讨论的按钮,这将启动GC登录VC。如果我不尝试自动加载时登录用户,该按钮将按预期工作。但是,如果我这样做了,并且失败(无论出于何种原因),无论如何该按钮都不会启动VC。

观察-

  • 这表明这确实是苹果的政策。
  • 尝试在失败的处理程序登录后启动GC登录VC根本不起作用,与VC外观完全无关。

我在stackoverflow上找到了这个问题,但是在那找不到我的答案。

我对您的问题是:

  • 这是否意味着您每次应用程序运行只能调用一次处理程序(即使在第一次处理程序调用中未显示VC)?
  • 有可能按照我的要求去做吗?如果是这样-怎么办?我希望能够仅在我知道它将成功的情况下尝试不显示VC才能登录,因此我可以为显示GC登录VC的按钮"保存"处理程序调用。我知道该信息在处理程序中可用(据此),我想知道是否还有另一种方法。
  • 总结一下我的问题-我是否必须"跳过"用户
    我尝试登录VC时是否登录VC? (如果已登录GC
    设备上的用户(不需要VC)

我希望这是清楚的,因为它令人困惑。
抱歉,很长的帖子!
非常感谢您的宝贵时间!


您保留一些NSUserDefaults,例如" userHasAttemptedToUseGameCenter"。它以NO或undefined开头,这对您来说意味着NO。然后,当他们按下游戏中心按钮时,您将设置为"是"并尝试进行游戏中心身份验证。从那时起,每次他们打开游戏(或至少每次他们进入与游戏中心相关的屏幕/功能,然后您便进行游戏中心身份验证。

即使由于您有游戏中心用户而无法正常工作,但由于"欢迎回来"游戏中心横幅会在最初的几分钟内弹出并覆盖游戏UI的顶部,因此可能会很痛苦。

如果您只是每次都让游戏中心身份验证出现,但用户不希望它出现,我认为在3次身份验证失败后,iOS将永远不会再次显示身份验证。如果您的用户以后改变主意并想要使用需要游戏中心的功能,那么您将完全陷入困境。您只能因为游戏中心无法进行身份验证而检测到这种情况!然后,您所要做的就是告诉用户转到Game Center应用并登录。它的地狱要测试。如果您的测试设备之一进入此锁定状态,则必须执行"重置所有内容和设置"。

如果有人在iOS8中对此进行了改进,请发出声音。