7

我正在尝试为我的应用制作 Game Center 排行榜。我一直在遵循 Apple 的步骤并遵循 GKTapper 的示例代码,但我无法在 Game Center 中显示任何分数。我已经在 iTunes Connect 中设置了排行榜。这是报告分数的代码:

- (void) reportScore: (int64_t) score forCategory: (NSString *) category {
    GKScore *scoreReporter = [[[GKScore alloc] initWithCategory:category] autorelease];
    scoreReporter.value = score;

    [scoreReporter reportScoreWithCompletionHandler:^(NSError *error) {
        if (error != nil)
        {
            UIAlertView* alert= [[[UIAlertView alloc] initWithTitle: @"Score Report Failed!" message: [NSString stringWithFormat: @"Reason: %@", [error localizedDescription]] delegate: self cancelButtonTitle: @"Try Again..." otherButtonTitles: NULL] autorelease];
            [alert show];
        }
    }];
}

代码似乎运行良好。永远不会显示警报。但是,当我进入游戏中心时,排行榜是空白的。我正在运行 Xcode 4.2 和 iOS 5。有什么想法吗?

4

5 回答 5

3

所说的一切都是真的:

  • 你需要一个 int_64t 分数;
  • 您需要在 iTunesConnect 上进行所有设置;
  • 您需要使用沙盒帐户。

我刚刚发现的是 iTunesConnect 中没有 Category 之类的东西。另一方面,您应该使用排行榜类别来初始化您的 GKScore。

从我在论坛上看到的情况来看,大约 2/3 的人做对了。

在 iTunesConnect 中,当您配置排行榜时,您设置:

  • 它的参考(我一直认为是类别);
  • 它的 ID(原来是实际的类别)。

我试图使用参考而不是 ID 来发布分数。

两件事情 :

  • 首先,我的程序没有错误(这在某种程度上是可以接受的);
  • 其次,一旦我做对了,我注意到,虽然许多人声称相反,但不需要多个沙盒帐户来显示分数。
于 2012-09-14T15:40:19.983 回答
2

在初始化为我修复它之后再次明确设置类别。

Scoreobject.category = category

为了显示正确的排行榜,我也在那里设置了类别。

leaderboardobject.category = @"mycategory";
于 2012-04-13T18:55:56.033 回答
0

1) 请检查您是否正确拼写了类别。令人惊讶的是,即使我的类别拼写错误,我也没有收到错误消息。纠正错字为我解决了这个问题。

2) 请在展示 GKLleaderboardViewController 之前检查您是否设置了正确的排行榜?正确设置如下:

GKLeaderboardViewController *leaderboardViewController = [[[GKLeaderboardViewController alloc] init] autorelease];
leaderboardViewController.category = @"yourcategoryname";
[youviewcontroller presentModalViewController:leaderboardViewController animated: YES];
于 2012-05-04T16:06:34.300 回答
0

必须有两个经过验证的 GameCenter 用户向排行榜报告分数,然后才能在排行榜中显示任何分数。

如果您的沙盒中只有一个用户,请创建另一个用户并报告分数。

如果仍然无法正常工作,请确保您验证了两个用户的电子邮件地址。

于 2012-05-08T18:27:58.933 回答
-1

reportScoreWithCompletionHandler 的文档说:

“在报告任务完成之前,您的应用程序应保持对分数对象的强引用。”

您正在自动发布。由于任务将在稍后完成,因此该对象可能在操作执行之前已被删除。

于 2011-12-31T03:58:11.947 回答