游戏中心身份验证处理程序视图控制器始终为nil。

3

我正在尝试在Swift Sprite Kit游戏中设置Game Center。以下是我的应用程序委托中完成的内容:

func authenticateLocalPlayer(){
    let localPlayer: GKLocalPlayer = GKLocalPlayer.localPlayer()

    localPlayer.authenticateHandler = {(viewController : UIViewController!, error : NSError!) -> Void in
        //handle authentication
        if (viewController != nil){
            self.window?.rootViewController?.presentViewController(viewController, animated: true, completion: nil)
        }
        else{
            if (localPlayer.authenticated){
                gameCenterEnabled = true

                //Get the default leaderboard identifier.
                localPlayer.loadDefaultLeaderboardIdentifierWithCompletionHandler({ (leaderboardIdentifierr: String!, error: NSError!) -> Void in
                    if (error != nil){
                        NSLog("%@", [error.localizedDescription])
                    }
                    else{
                        leaderboardIdentifier = leaderboardIdentifierr
                    }
                })
            }
            else{
                gameCenterEnabled = false
            }

        }
    }
}

我遇到的问题是,localPlayer.autheniticateHandler总是返回一个空的viewController,即使我的本地玩家没有经过身份验证。请告诉我我做错了什么以及如何解决这个问题。

3个回答

9
我遇到了同样的问题。 尝试从设备中删除应用,然后前往设备设置中的游戏中心并启用沙盒模式。 然后再次在设备上运行游戏,应该会显示游戏中心登录窗口。

谢谢。如果没有这个答案,我可能永远无法让它工作。 - Michael

0

我也遇到了完全相同的问题。尝试了多个设备,结果都一样。删除应用程序/更改游戏中心设置也没有帮助。 不过你的代码看起来没问题。 看来Swift的GC完全失效了..


0

我尝试在模拟器中运行我的应用程序,认证窗口很好地显示出来了。但是我不确定为什么它在我的设备上无法正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接