根据 Apple 的 Game Center 编程指南,此代码设置了身份验证处理程序。如果您在游戏开始时运行它,第一次运行它,它会提示用户登录(如果他们还没有登录)。
- (void)authenticateLocalPlayer {
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){
if (viewController != nil) {
NSLog(@"Player not authenticated.");
} else if (localPlayer.isAuthenticated) {
NSLog(@"Authentication successful.");
} else {
NSLog(@"Authentication failed. Error: %@.",error);
}
};
}
假设用户还没有登录,取消认证画面正常玩游戏。
我的游戏中有一个用于玩多人比赛的按钮。如果用户按下按钮,它将尝试通过呈现一个GKMatchmakerViewController
实例来搜索其他玩家。
由于玩家没有登录,玩家实际上会收到一个错误对话框,说明他们没有登录。对话框只有一个确定按钮,可以关闭它。
如果玩家坚持按此按钮,则会出现相同的对话框。
然而,这是一种奇怪的行为。如果玩家想玩多人对战但尚未登录,游戏会提示用户登录会更合理。
上面的代码设置了一个处理程序,所以它真的不是我想要的。但是,我做了一个断点并注意到这viewController
是一个GKHostedAuthenticateViewController
实例。我想也许我可以创建该类的一个实例并呈现它,这在技术上应该等同于提示用户登录。
但是,当我编写它时,Xcode 似乎无法识别该类。我的印象是我不允许这样做。
如何手动提示用户登录游戏中心?