gpt4 book ai didi

ios - GameCenter - 登录用户,如果他们已经输入了他们的凭据

转载 作者:行者123 更新时间:2023-11-28 06:23:59 26 4
gpt4 key购买 nike

在我的游戏中,我不希望 GameCenter 登录弹出窗口在应用程序启动时自动出现。所以我有一个 GameCenter 按钮,用户可以点击它来登录。当他们按下按钮时,会出现登录屏幕。

但是,当您在登录后再次启动应用程序时,用户似乎仍未“登录”。他们仍然需要再次按下按钮,然后会出现一个小横幅,上面写着“欢迎回来,用户!”。有没有一种方法可以自动重新登录用户,而无需他们每次都按下按钮?我已经输入了我的凭据,为什么我必须再次进行身份验证?

这是我的代码,当用户按下按钮时:

self.authenticatePlayer()

这是验证方法:

    func authenticatePlayer() {
let localPlayer = GKLocalPlayer.localPlayer()
localPlayer.authenticateHandler = {
(view, error) in

if view != nil {
self.view?.window?.rootViewController?.presentViewController(view!, animated: true, completion: nil)
} else {

}
}
}

我需要一些可以欢迎用户回来的东西,如果他们已经登录,但如果他们还没有登录则不要求他们登录。

最佳答案

要了解您所看到的行为,我们需要了解身份验证过程的工作原理。

它在您设置身份验证处理程序时启动。这是告诉您的应用尝试与 Game Center 对话的信号。身份验证处理程序的完成 block 具有三个可能的条件:

  1. 错误:出了点问题
  2. 接收 View Controller :登录 View Controller 告诉您玩家未登录
  3. 收到 nil View Controller :缺少错误 + 缺少 View Controller 告诉您玩家已经登录。

虽然 IOS 可能知道您的登录状态(或试图使用缓存信息伪造您的登录状态),但您的应用程序会在您退出时丢失该上下文。当您再次启动时,没有尝试设置身份验证处理程序,因此在您的用户按下按钮之前不会尝试验证身份验证状态,因此您的应用程序不知道用户是否已登录。

我认为以下方法将非常接近您要查找的内容:

  • 在您的第一个 viewController 的 viewDidLoad 中尽早设置身份验证处理程序并启动身份验证。在您的启动顺序中尽早执行此操作。
  • 如果用户未通过身份验证,您将收到一个登录 View Controller 。不要展示它。相反,保存它。除非/直到用户按下按钮,否则不要显示它。
  • 如果用户已经登录,他们将在游戏开始后立即看到欢迎回来的消息,并且您将能够继续,因为用户仍处于登录状态。

关于ios - GameCenter - 登录用户,如果他们已经输入了他们的凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42518337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com