沙盒排行榜为空

7

我正在尝试为我的应用创建一个游戏中心排行榜。我一直在按照苹果公司的步骤并遵循GKTapper的示例代码,但是我无法在游戏中心显示任何得分。我已经在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];
        }
    }];
}

代码似乎运行良好,没有弹出警告。但是,当我进入Game Center时,排行榜是空的。我正在运行Xcode 4.2和iOS 5。有什么想法吗?

5个回答

3

所说的一切都是完全正确的:

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

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

根据我在论坛上看到的情况,大约有三分之二的人做对了。

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

  • 它的参考(我长期以为是类别);
  • 它的ID(事实证明是真正的类别)。

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

两件事:

  • 首先,程序没有出错(在某种程度上是可以接受的);
  • 其次,我注意到,尽管许多人声称相反,但只需要一个沙盒帐户即可显示得分。

2

在初始化后再次明确设置类别解决了我的问题。

Scoreobject.category = category

此外,为了显示正确的排行榜,我也在那里设置了类别。
leaderboardobject.category = @"mycategory";

0

1) 请检查您是否正确拼写了类别。令人惊讶的是,即使我拼错了类别,也没有出现错误。更正拼写错误后,问题得到解决。

2) 在呈现GKLeaderboardViewController之前,请检查您是否设置了正确的排行榜?请按以下方式正确设置:

GKLeaderboardViewController *leaderboardViewController = [[[GKLeaderboardViewController alloc] init] autorelease];
leaderboardViewController.category = @"yourcategoryname";
[youviewcontroller presentModalViewController:leaderboardViewController animated: YES];

0

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

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

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


-1

reportScoreWithCompletionHandler的文档说明:

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

您正在进行自动释放。由于任务将在稍后完成,因此对象可能会在操作执行之前被删除。


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