GameCenter - 在调用处理程序之前检查先前的登录?

时间:2015-03-04 00:38:23

标签: ios objective-c swift authentication game-center

我的应用使用Game Center。我尝试在VC加载时记录用户。 如果他以前登录过 - 很棒,它会将通知记录在最顶层。如果他没有登录 - 很棒,它会显示游戏中心登录VC。

但是,我想在他进入应用程序时不要通过Game Center登录VC来“跳转”用户。我想要一个按钮来调出Game Center登录VC,这很容易,所以只有当他点击按钮时,游戏中心登录VC才会出现。

问题是 - 我发现(通过试验和错误),如果我尝试登录用户,并且失败(例如,用户根本没有登录到游戏中心),如果我不在那个时刻带来Game Center登录VC - 在处理程序的第一次调用中 - 我不能在以后提起它。

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

观察 -

  • this表明这确实是Apple政策。
  • 尝试在失败的处理程序登录失败后尝试将GC登录VC启动,与VC外观完全无关。

我在stackoverflow上找到了this问题,但在那里找不到我的答案。

我的问题是:

  • 这是否意味着每个应用程序运行只能调用一次处理程序(即使在第一次处理程序调用时没有显示VC)?
  • 有可能做我问的事吗?如果是这样 - 怎么样?我希望能够尝试登录而不显示VC只有我知道它会成功,所以我可以“保存”处理程序调用显示GC登录VC的按钮。我知道信息在处理程序中可用(根据this),我想知道是否还有其他方法。
  • 总结我的问题 - 我是否必须'跳'用户 登录VC我尝试登录他的那一刻? (如果有GC登录 用户在设备上,不需要VC)

我希望这很清楚,因为这是一个令人困惑的情况。 对不起,很长的帖子! 非常感谢您的时间!

1 个答案:

答案 0 :(得分:1)

你保留了一些NSUserDefaults,例如&userHasAttemptedToUseGameCenter'。它从NO或undefined开始,这对你来说意味着NO。然后,当他们按下游戏中心按钮时,您设置为YES并尝试进行游戏中心身份验证。从那时起他们每次打开游戏时(或者至少每次他们去游戏中心相关的屏幕/功能,然后你进行游戏中心认证。

即使它的工作正常,因为你有一个游戏中心用户,这可能是一个痛苦,因为“欢迎回来'游戏中心横幅将在最初的几分钟内弹出并覆盖游戏UI的顶部。

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

如果在iOS8中有任何改善,请有人插话。

相关问题