gpt4 book ai didi

SwiftUI 游戏中心身份验证不提示用户登录

转载 作者:行者123 更新时间:2023-12-03 16:32:35 31 4
gpt4 key购买 nike

我有以下代码可以在我的 SwiftUI 应用程序中对 Game Center 中的本地玩家进行身份验证。如果玩家尚未登录,我希望 Game Center 提示用户登录,但这不会发生。

class AppSettings: UINavigationController {
func authenticateUser() {
let localPlayer = GKLocalPlayer.local
localPlayer.authenticateHandler = { vc, error in
guard error == nil else {
print(error?.localizedDescription ?? "")
return
}
}
}
}
可能是什么问题呢?我还阅读了关于在我类(class)的某处使用 UIViewControllerRepresentable 将 UIKit 的 ViewController 集成到 SwiftUI 中的内容,但我不明白如何使用它。
有人可以帮我吗?

最佳答案

我没有让任何人正确回答我的问题,经过几天的挖掘,我找到了解决方案。所以我必须使用如下所示的 UIKit 实现,并在 GameCenterManager 结构中使用 UIViewControllerRepresentable 围绕它创建一个包装器。在那之后,我所要做的就是在 ZStack 的 SwiftUI View 中调用 GameCenterManager() ,工作就完成了!

import SwiftUI
import UIKit
import GameKit


class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
authenticateUser()
}
let localPlayer = GKLocalPlayer.local
func authenticateUser() {

localPlayer.authenticateHandler = { vc, error in
guard error == nil else {
print(error?.localizedDescription ?? "")
return
}
if vc != nil {
self.present(vc!, animated: true, completion: nil)
}
if #available(iOS 14.0, *) {
GKAccessPoint.shared.location = .bottomLeading
GKAccessPoint.shared.showHighlights = true
GKAccessPoint.shared.isActive = self.localPlayer.isAuthenticated

// Fallback on earlier versions
}
}
}
}


struct GameCenterManager: UIViewControllerRepresentable {

func makeUIViewController(context: UIViewControllerRepresentableContext<GameCenterManager>) -> ViewController {


let viewController = ViewController()
return viewController

}

func updateUIViewController(_ uiViewController: ViewController, context: UIViewControllerRepresentableContext<GameCenterManager>) {

}

}

关于SwiftUI 游戏中心身份验证不提示用户登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64068954/

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