iOS - 默认GameCenter视图中未显示的成就

时间:2014-03-20 23:39:32

标签: ios iphone ios7 cocos2d-iphone game-center

我这里有一个非常奇怪的问题。目前,我在我的游戏中使用Cocos2D,它具有排行榜和成就。一切正常;我可以登录,将分数发送到排行榜并完成成就。只有一件事不起作用:我无法展示成就观点。

我想要的是,当玩家在我的应用程序中打开游戏中心时,显示默认的“仪表板”,其中您有不同的排行榜,顶部的标签可以转到“成就”视图。这是我目前的代码:

- (void) showGameCenter{
    GKGameCenterViewController *gameCenterViewController = [[GKGameCenterViewController alloc] init];
    gameCenterViewController.gameCenterDelegate = self;
    gameCenterViewController.viewState = GKGameCenterViewControllerStateDefault;

    if (gameCenterViewController != NULL) {
        AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];
        [[app navController] presentModalViewController:gameCenterViewController animated:YES];

        [gameCenterViewController release];
    }
}

- (void) gameCenterViewControllerDidFinish:(GKGameCenterViewController *)viewController{
    AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];
    [[app navController] dismissModalViewControllerAnimated:YES];
}

奇怪的是,在iPhone上,“成就”标签从未出现在顶部,但 IT是在iPad上?!?! iPad上一切都很好......

我还尝试将gameCenterViewController的viewState属性更改为GKGameCenterViewControllerStateAchievements,但没有成功。还尝试使用GKAchievementViewController类而不是GKGameCenterViewController,仍然无法正常工作。它总是把我送到排行榜视图......

我无法弄清楚出了什么问题。最奇怪的是,所有在iPad上运行良好 ...请帮忙!

谢谢你们!

P.S我的游戏是横向定位,我目前正在我的两台设备上测试iOS 7.0.6

4 个答案:

答案 0 :(得分:5)

我刚才遇到了同样的问题,我偶然发现了这个问题。这对我有用:

1)从手机中删除应用程序
2)关闭模拟器
3)清洁项目(产品>清洁)
4)转到设置并退出游戏中心(同时,确保这是沙盒帐户)
5)重启iPhone 6)在模拟器中构建项目(这是你应该看到成就的阶段)
7)现在建立你的测试设备,你应该看到成就。

我不确定这是否是万能的灵丹妙药,但是在对代码进行了一个小时的干扰后,它对我有用。希望它可以帮助其他任何人解决这个问题。

答案 1 :(得分:2)

在iPhone和iPad模拟器上测试我的应用时,我遇到的问题完全相同。 突然出现给我的成就标签是我退出/重新启动iPhone模拟器:) 也许重置你的物理iPhone可以做到这一点?或者甚至只是从游戏中心注销?

答案 2 :(得分:2)

我找到了一个解决方案,只需使用https://itunesconnect.apple.com中的测试用户。切勿使用您的真实账户。

答案 3 :(得分:1)

我正在使用GameCenter成就,它在所有ios版本中都能与iPhone和iPad一起使用。 让我在这里编写代码片段,这可能会对你有所帮助 GKAchievementViewController正在ios5中使用,而GKGameCenterViewController已在ios6中引入

- (void) showGameCenter{
if([[[UIDevice currentDevice]systemVersion]intValue]==5)
{
   GKAchievementViewController *achievements = [[GKAchievementViewController alloc] init];

   if (achievements != nil)
   {

    achievements.achievementDelegate = self;
    [self presentViewController: achievements animated: YES completion:nil];  
   }

   [achievements release];

}else if ([[[UIDevice currentDevice]systemVersion]intValue]>=6)
   {
     GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];

     if (gameCenterController != nil)
      {

        gameCenterController.gameCenterDelegate = self;
        gameCenterController.viewState = GKGameCenterViewControllerStateAchievements;

        [self presentViewController: gameCenterController animated: YES completion:nil];

      }
    }
}   

- (void)achievementViewControllerDidFinish:(GKAchievementViewController *)viewController
{

       [self dismissViewControllerAnimated:YES completion:nil];


}

- (void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)gameCenterViewController
{

       [self dismissViewControllerAnimated:YES completion:nil];

}

有关详情,请参阅Apple GameCenter Programming Guide