所以我将分数发送到GC排行榜,我没有收到任何错误,分数显着发送,但我仍然看不到排行榜中列出的分数!排行榜本身列在游戏中心,没有得分。
根据Google搜索和question on here,可以通过尝试使用多个帐户记录分数来解决此问题。我现在已经在Simulator(iOS5)和iPhone上尝试了三个不同的帐户;提交分数时,没有一个显示任何错误。
发送分数的代码在这里:
- (void)reportScore:(NSString *)identifier score:(int)rawScore {
GKScore *score = [[[GKScore alloc] initWithCategory:identifier] autorelease];
score.value = rawScore;
[scoresToReport addObject:score];
[self save]; // Save here even though we save again in didEnterBackground, just in case of crash...
if (!gameCenterAvailable || !userAuthenticated) return;
[self sendScore:score];
}
- (void)sendScore:(GKScore *)score {
[score reportScoreWithCompletionHandler:^(NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^(void)
{
if (error == NULL) {
NSLog(@"Successfully sent score!");
[scoresToReport removeObject:score];
} else {
NSLog(@"Score failed to send... will try again later. Reason: %@", error.localizedDescription);
}
});
}];
}
答案 0 :(得分:10)
它突然开始工作(没有任何代码更改甚至重新编译)。我认为排行榜实际出现需要一段时间,对我来说大约需要18个小时。
在这段时间内提交的分数仍将记录,它们不会立即显示。
答案 1 :(得分:0)
我从来没有将分数添加到沙盒中,但这里是我实现的代码,它适用于当前在应用商店中的版本:
GKScore * score = [[[GKScore alloc] initWithCategory:@"com.example.appname.scoreboardname"] autorelease];
score.value = [[NSUserDefaults standardUserDefaults] integerForKey:@"NEWSCORE"];
[score reportScoreWithCompletionHandler:^(NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^(void) {
if (error == NULL) {
NSLog(@"Score Sent");
} else {
NSLog(@"Score Failed");
}
});
}];
确保您的GKScore.value类型为int64_t