我正在尝试为我的应用制作游戏中心排行榜。我一直在遵循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];
}
}];
}
代码似乎运行良好。警报永远不会显示。但是,当我进入Game Center时,排行榜是空白的。我正在运行Xcode 4.2和iOS 5.有什么想法吗?
答案 0 :(得分:3)
无论被告知什么都是完全正确的:
我刚刚发现,iTunesConnect中没有类别的东西。另一方面,您应该使用排行榜类别初始化您的GKScore。
从我在论坛上看到的情况来看,大约有2/3的人做对了。
在iTunesConnect中,配置排行榜时,请设置:
我试图使用引用而不是ID来发布分数。
两件事:
答案 1 :(得分:2)
在init为我修复后再次明确设置类别。
Scoreobject.category = category
为了显示正确的排行榜,我也在那里设置了类别。
leaderboardobject.category = @"mycategory";
答案 2 :(得分:0)
1)请检查您是否正确拼写了该类别。令人惊讶的是,即使我的类别拼写错误,我也没有收到错误。纠正错字为我解决了问题。
2)在呈现GKLeaderboardViewController之前,请检查您是否设置了正确的排行榜?正确设置如下:
GKLeaderboardViewController *leaderboardViewController = [[[GKLeaderboardViewController alloc] init] autorelease];
leaderboardViewController.category = @"yourcategoryname";
[youviewcontroller presentModalViewController:leaderboardViewController animated: YES];
答案 3 :(得分:0)
两名经过验证的GameCenter用户必须在排行榜中显示任何分数之前向排行榜报告分数。
如果沙盒中只有一个用户,请创建另一个用户并报告分数。
如果仍然无效,请确保您验证了两个用户的电子邮件地址。
答案 4 :(得分:-1)
reportScoreWithCompletionHandler的文档说:
“在报告任务完成之前,您的应用程序应保留对分数对象的强引用。”
您正在自动释放。由于任务将在稍后完成,因此可能在执行操作之前删除该对象。