iOS游戏中心沙盒:排行榜显示“无分数”

时间:2012-02-02 22:39:15

标签: iphone objective-c game-center

所以我将分数发送到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);                
                           }
                       });
    }];
}

2 个答案:

答案 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