我创建了一个与GameCenter集成的游戏 - 我使用排行榜来跟踪用户的高分。从主菜单中,我允许用户使用GKGameCenterViewController类可视化排行榜,创建它的实例并将其显示在屏幕上,从我的主ViewController调用以下方法:
#pragma mark - Game Center Methods
//This is called from ViewDidLoad
- (void) authenticateLocalPlayer
{
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
if (!localPlayer.isAuthenticated){
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){
if (viewController != nil)
{
//showAuthenticationDialogWhenReasonable: is an example method name
[self presentViewController:viewController animated:YES completion:nil];
}
else if ([GKLocalPlayer localPlayer].isAuthenticated){
[[SettingAndScoreManager defaultManager]refreshHighScore];
}
else
{
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Game Center Unavailable" message:@"An error occured - please open the Game Center and sign in manually selecting the game from the apps available" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
};
}
}
//This is called when the "Leaderboard" button is pressed in the main menu - please see video demo below
- (void)showGameCenter
{
GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];
if (gameCenterController != nil)
{
gameCenterController.gameCenterDelegate = self;
[self presentViewController: gameCenterController animated: YES completion:nil];
}
}
//delegate method to dismiss the GKGameCenterViewController
- (void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)gameCenterViewController
{
[self dismissViewControllerAnimated:YES completion:nil];
}
一切正常使用 - 当调用方法时(仅当用户已经在Game Center中进行了身份验证时才允许这样做),Game Center VC出现在显示排行榜的屏幕上。然而,有三天,当我一直试图调用该方法时,VC出现了,但是几秒钟后它仍然是空的,然后它会自动被解除而不会按下任何东西。
一开始我认为这是游戏中心的一个临时问题,但它现在已经存在了三天的问题 - 我在3种不同的设备上尝试了它并且我遇到了同样的问题。但是,如果我直接打开Game Center应用程序并在可用游戏列表中搜索我的应用程序,我可以正确显示排行榜。
有关正在发生的事情的任何想法?
以下是我在YouTube上传的一个演示该问题的演示。
更新:我已经向Apple开发者技术支持部门提出了一张票,经过多次测试,他们没有找到答案并建议提交错误报告,我只是完成。我将用结果更新问题。
更新:Apple Bug Reporter上的问题ID为15955767。
感谢。